Задать вопрос
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


но чувствую, есть вариант лучше...
Как лучше оптимизировать это решение?
  • Вопрос задан
  • 1041 просмотр
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Хекслет
    Java-разработчик
    10 месяцев
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • Учебный центр IBS
    RT-001 Эксплуатация RT.DataLake
    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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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