Oracle SQL: получение текста между двумя предложениями - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь извлечь набор строк из строки, которая хранится в столбце таблицы с именем «myColumn», одна строка которого выглядит следующим образом:

Type:MOBILE
Service:GSM
Pd to LOOK:
NOKIA/HMD;
APPLE;
MI;

Pd to SEE (swap):
SAMSUNG;
VIVO;

Pd to SEE (extra):
MOKA;

Contact me: 123456

Код, который я пробовал для получения одного столбца -

SELECT regexp_substr(myColumn, '\"Products to be CEASED:"([^"Products to be PROVIDED (swap):"]+)\}', 1,1,NULL,1) AS output FROM mytable

Мне нужен запрос, который бы возвращал текст между предложениями -

'Pd to LOOK:' и 'Pd to SEE (swap):'

'Pd to SEE (swap):' и 'Pd to SEE (extra):'

'Pd to SEE (extra):' и 'Свяжитесь со мной: 123456'

Например -

Pd to LOOK:            Pd to SEE (swap):  Pd to SEE (extra):
NOKIA/HMD; APPLE; MI;  SAMSUNG;VIVO;      MOKA;

1 Ответ

2 голосов
/ 22 апреля 2019

Прямым решением является использование функции substr в сочетании с функцией instr.Или DBMS_LOB.instr и substr, если тип данных столбца - LOB.

документация для dbms_lob.instr

, например:

select 
     substr(
       mycolumn,
       instr(mycolumn,'Pd to LOOK:'), --starting position
       instr(mycolumn,'Pd to SEE (swap):') - instr(mycolumn,'Pd to LOOK:'), --amount to get
       ) as "Pd to LOOK:"
     --, other expressions/columns
from 
     my_table;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...