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


но чувствую, есть вариант лучше...
Как лучше оптимизировать это решение?
  • Вопрос задан
  • 1037 просмотров
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Wanted. Санкт-Петербург
До 450 000 ₽
Wanted. Санкт-Петербург
До 100 000 ₽
Wanted. Санкт-Петербург
До 120 000 ₽
25 нояб. 2024, в 17:04
1000 руб./в час
25 нояб. 2024, в 17:00
3000 руб./за проект