Oracle SQL: используйте REGEXP_SUBSTR для извлечения текста перед конкретными словами - PullRequest
0 голосов
/ 16 октября 2018

Используя Oracle sql, я хочу извлечь текст перед определенными словами.Мне нужно исключить текст, начинающийся со слова «превышать» или «макс» и следующий за ним.

Пример: «Возьмите 1-2 вкладки 4–6 часов. Не превышайте 5 вкладок в день»

Требуемый результат: «Возьмите 1-2 вкладки 4-6 часов. Не»

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Я достиг желаемого результата с помощью вложенного regexp_substr(), например так:

select trim(regexp_substr(
    regexp_substr('Take 1-2 tabs 4-6 hours. Do not exceed 5 tabs per day','.*(exceed|max)'),
    '.*[^(exceed|max)]'
  )) desired_output
from dual;

Но если вам нужны пробелы перед «превышением» или «макс», просто удалите trim().

Ссылка: https://www.techonthenet.com/oracle/functions/regexp_substr.php

0 голосов
/ 16 октября 2018

Я думаю regexp_instr() с substr(), а не regexp_substr() напрямую:

select x.*,
       substr(str, 1, regexp_instr(str || 'max', 'exceed|max') - 2)
from (select 'Take 1-2 tabs 4-6 hours. Do not exceed 5 tabs per day' as str from dual) x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...