Как извлечь текст между двумя словами в Oracle - PullRequest
0 голосов
/ 06 мая 2020

Это исходная строка:

random foobar "name" : "Jack Ryan", other random stuff

В запросе Oracle, как мне извлечь из него Джека Райана?

Думаю, я ищу то, что находится между "name" : " и ",

1 Ответ

1 голос
/ 06 мая 2020

Один из вариантов: regexp_replace():

regexp_replace(col, '.*"name" : "([^"]+)".*', '\1')

Вы также можете использовать regexp_substr():

regexp_substr(col, '"name" : "([^"]+)"', 1, 1, null, 1)

Это захватывает часть строки в двойных кавычках, которая следует за строкой '"name" : '.

Демонстрация на DB Fiddle :

with t as (select 'random foobar "name" : "Jack Ryan", other random stuff' col from dual)
select 
    col, 
    regexp_replace(col, '.*"name" : "([^"]+)".*', '\1') newcol1,
    regexp_substr(col, '"name" : "([^"]+)"', 1, 1, null, 1) newcol2
from t
COL                                                    | NEWCOL1   | NEWCOL2  
:----------------------------------------------------- | :-------- | :--------
random foobar "name" : "Jack Ryan", other random stuff | Jack Ryan | Jack Ryan
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...