Извлечь подстроку после совпадения в оракуле - PullRequest
0 голосов
/ 29 августа 2018

У меня есть строка типа Order @ Confirm @@@@ 2791 Я хотел получить 2791 после @@@@ delimiter. Я попытался ниже одного не получить точную подстроку, что я ожидаю вернуть.

SELECT regexp_substr('Order @ Confirm @@@@2791','[^@@@@]+',1,2) regexp_substr
FROM dual;

Я хотел бы вернуть 2791 из вышеуказанного запроса.

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Для этого вам не нужны регулярные выражения.

SELECT substr('Order @ Confirm @@@@2791', 
              instr('Order @ Confirm @@@@2791', '@@@@') + 4) as your_substr
FROM dual;
0 голосов
/ 29 августа 2018
SELECT regexp_substr('Order @ Confirm @@@@2791','@@@@(.*)$',1,1, null, 1) regexp_substr
FROM dual;

Если вы хотите ограничить совпадение цифрами:

SELECT regexp_substr('Order @ Confirm @@@@2791','@@@@(\d+)$',1,1, null, 1) regexp_substr
FROM dual;

regexp_replace тоже работает:

SELECT regexp_replace('Order @ Confirm @@@@2791','.*?@@@@(\d+)$', '\1') regexp_replace
FROM dual;

Обратите внимание, с помощью regexp_substr (), если совпадение не найдено, возвращается NULL, и с помощью regexp_replace (), если совпадение не найдено, возвращается исходная строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...