1

基本的に、正規表現を使用して、以下の select ステートメントの where 句を置き換えたいと思います。(ここでは 3 つの条件があります。1. 所有者名 2. 含めるテーブル 3. 除外するテーブル)

SELECT *
FROM all_tables
WHERE owner = 'XXXXXXXX'
   AND (table_name LIKE '%_\_A' ESCAPE '\'
     OR table_name LIKE '%_\_B' ESCAPE '\'
     OR table_name LIKE '%_\_C' ESCAPE '\')
   AND (table_name NOT LIKE statement for (P|Q)(R|S)D(.*)(_D$)')

私はこれまでに何をしてきましたか?

以下のselectステートメントでは、AまたはBまたはCで終わるテーブル名を取得するためにREGEXP_LIKEを書き、(P|Q)(R|S)*(_D))のようなパターンに従う必要があるテーブル名に対して同じNOT REGEXP_LIKEを書きました。除外されます。

私はこの方法で REGEXP_LIKE と NOT REGEXP_LIKE が機能しないことを知っています。上記の 2 つの単一の正規表現 (regexp_like ではなく regexp_like) を見つけるのを手伝ってくれませんか。どうもありがとうございました

SELECT table_name
FROM all_tables
WHERE owner = 'XXXXXXXX'
   AND REGEXP_LIKE (table_name, '(.*)((A|B|C)$)', 'i')
   AND WHERE NOT REGEXP_LIKE(table_name,'^(P|Q)(R|S)D(.*)(_D$)', 'i');
4

2 に答える 2