Задать вопрос
drno-reg
@drno-reg
см не кратко

Как лучше оптимизировать регулярное выражение?

Здравствуйте.

Сегодня пришлось решить задачу регуляркой на PL-SQL
нужно было к примеру из
select 'SESSION_WAIT' as name, (select UM.MON_SESSION_WAIT from dual) as value from DUAL
вытащить SESSION_WAIT
решил таким образом

SELECT 
SUBSTR(REGEXP_SUBSTR('select ''SESSION_WAIT'' as name, (select UM.MON_SESSION_WAIT from dual) as value from DUAL', '''[^'']+'''),2,LENGTH(REGEXP_SUBSTR('select ''SESSION_WAIT'' as name, (select UM.MON_SESSION_WAIT from dual) as value from DUAL', '''[^'']+'''))-2)
FROM DUAL


но чувствую, есть вариант лучше...
Как лучше оптимизировать это решение?
  • Вопрос задан
  • 1038 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vovik0134
Конкретно в Вашем случае можно использовать следующее выражение:
select regexp_replace('select ''SESSION_WAIT'' as name, (select UM.MON_SESSION_WAIT from dual) as value from DUAL', '^.*''(.*)''.*$', '\1') from dual;


\1 выбирает первую группу из регулярного выражения

Подробнее о regexp_replace
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы