oracle regexp_substr для случайного появления шаблона

Привет мне нужно найти шаблон, который случайно встречается в строке в любом порядке

Значения в столбце могут быть такими

'k=34,n=WER-RTN,l=hy33,z=device'

'k=34,l=hy33,z=device,n=WER-RTN'

'n=WER-RTN,l=hy33,z=device,k=34'

Мне нужно подобрать значение против n= till ', иначе, если оно происходит в конце до последнего. но n может встречаться в любом месте строки.

1 ответ

Решение

Если вы хотите получить WER-RTN значение, вы можете извлечь это значение с помощью регулярного выражения, как это:

WITH t AS (SELECT 'k=34,n=WER-RTN,l=hy33,z=device' text FROM dual
           UNION
           SELECT 'k=34,l=hy33,z=device,n=WER-RTN' text FROM dual
           UNION
           SELECT 'n=WER-RTN,l=hy33,z=device,k=34' text FROM dual)
SELECT REPLACE(REPLACE(REGEXP_SUBSTR(text,'(n=.+?,)|(n=.+?$)'),'n='),',')
FROM t

Если вы используете Oracle 11g или выше, вы можете немного упростить его:

REGEXP_SUBSTR (text, '(^|,)n=([^,]+)', 1, 1, '', 2)
Другие вопросы по тегам