оракул получить все совпадающие вхождения в столбце - PullRequest
0 голосов
/ 24 августа 2018

У меня есть таблица, которая имеет 2 столбца: ID & JOB_Description (Text).Я хотел бы написать оракула SQL для извлечения всех подстрок в столбце Описание, которые соответствуют регулярному шаблону.

Тем не менее, я научился извлекать совпадающие подстроки из строки с кодом ниже SQL, но я понятия не имею, применять ли код SQL ниже для всех данных за один раз в вышеупомянутой таблице (столбец: JOB_Description).

SQL для получения всех совпадающих вхождений из строки:

 SELECT REGEXP_SUBSTR(JOB_Description, '(ABC|DE)([[:digit:]]){5}', 1, LEVEL) AS substr
   FROM (
         select 'Please help to repair ABC12345, DE22222' as JOB_Description 
          from DUAL)
  CONNECT BY LEVEL <= REGEXP_COUNT(JOB_Description, '(ABC|DE)([[:digit:]]){5}');

1 Ответ

0 голосов
/ 24 августа 2018

Вы можете попробовать этот запрос.

 with test as(
  select 'ABC12345, DE22222' as JOB_Description from DUAL union
  select 'Please help to repair ABC12345, DE22222' as JOB_Description from DUAL 
)
SELECT REGEXP_SUBSTR(JOB_Description, '(ABC|DE)([[:digit:]]){5}', 1, LEVEL) AS substr
FROM test
CONNECT BY LEVEL <= REGEXP_COUNT(JOB_Description, '(ABC|DE)([[:digit:]]){5}')
  AND PRIOR JOB_Description = JOB_Description
  AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL

Результат:

ABC12345
DE22222
ABC12345
DE22222

Хорошее объяснение последних двух строк можно найти здесь

...