В основном я хотел бы заменить предложение where из приведенного ниже оператора select с помощью регулярных выражений. (здесь есть три условия: 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 я написал REGEXP_LIKE, чтобы получить имя таблицы, оканчивающееся на A или B или C, и тот же NOT REGEXP_LIKE для тех имен таблиц, которые следуют шаблону, подобному (P | Q) (R | S) * (_ D)) и нуждаютсябыть исключенным.
Я знаю, что 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');