Получить слово после указанного c слова, используя regexp_substr в sql oracle - PullRequest
3 голосов
/ 28 мая 2020

Я пробовал

select regexp_substr ('sys: error: This is a message ''123:'' for column EMP_NB', '[[:alpha:]_]+',1,9) from dual

У меня есть столбец, заполненный данными этого типа.

sys: error: This is a message '123:' for column EMP_NB.  
sys: error: This is a message '45346:' for column EM_NM.  
sys: error: This is a message '78324f9:' for column DEPT_NO_VL.

Мне нужен вывод, как показано ниже, с использованием regexp_substr в Oracle SQL . Проблема в том, что длина строки имеет тенденцию меняться, и мне нужно извлекать только символы после слова column в строке.

Ожидаемые результаты:

EMP_NB
EM_NM
DEPT_NO_VL

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Просто привяжите шаблон к концу строки:

select regexp_substr('sys: error: This is a message ''123:'' for column EMP_NB', '[[:alpha:]_]+$')
from dual

Здесь - скрипт db <>.

Данные вашего примера имеют точку в конец. Если это часть строки, вы можете использовать regexp_replace():

select regexp_replace(message, '^.*[^[:alpha:]_]([[:alpha:]_]+)[^[:alpha:]_]*$', '\1')
from (select 'sys: error: This is a message ''123:'' for column EMP_NB' as message from dual union all
      select 'sys: error: This is a message ''45346:'' for column EM_NM.' as message from dual union all
      select 'sys: error: This is a message ''78324f9:'' for column DEPT_NO_VL.' as message from dual
     ) x
1 голос
/ 28 мая 2020

Вы можете использовать

select regexp_substr ('sys: error: This is a message ''123:'' for column EMP_NB', 'column[[:space:]]*([[:alpha:]_]+)', 1, 1, NULL, 1) from dual

Здесь

  • column - соответствует column word
  • [[:space:]]* - 0 или более пробельных символов
  • ([[:alpha:]_]+) - захватывает в Группу 1 любую одну или несколько букв или знаков подчеркивания.

Возвращается только захваченное значение, поскольку последний аргумент идентификатора группы установлен на 1 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...