基本上我想使用正则表达式从下面的 select 语句中替换 where 子句。(这里有三个条件: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$)')
到目前为止我做了什么?
在下面的选择语句中,我编写了 REGEXP_LIKE 以获取以 A 或 B 或 C 结尾的表名,并且对于遵循 (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');