Один из вариантов: 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