Извлечь определенные строки из столбца CLOB - PullRequest
0 голосов
/ 24 января 2019

У меня есть столбец CLOB, в котором есть такие строки:

[2019-01-24 11:57:05]: Serial.no is: 12330

[2019-01-24 11:57:05]: Buyers: 3

[2019-01-24 11:57:06]: Serial.no is: 23340

[2019-01-24 11:57:06]: Buyers: 6

Теперь я хотел бы выбрать Select для этого столбца и извлечь только те строки, где "Serial.no", например:

[2019-01-24 11:57:05]: Serial.no is: 12330
[2019-01-24 11:57:06]: Serial.no is: 23340

Я надеюсь на какое-нибудь простое решение, потому что я не совсем понимаю все, что нашел до сих пор, заранее спасибо.

РЕДАКТИРОВАТЬ:

Это возвращает мне одну строкупервый:

select regexp_substr(My_CLOB, 'Serial.no.*',1) as clob_data from MyTable
WHERE id='1163753'; 

Возвращает столбец в типе данных CLOB, но это не было бы проблемой, если бы я мог получить все строки.

1 Ответ

0 голосов
/ 24 января 2019

Это трюк, использующий предложение connect by для увеличения индекса регулярного выражения.Кажется, работает

WITH test AS (
     SELECT
         '[2019-01-24 11:57:05]: Serial.no is: 12330
[2019-01-24 11:57:05]: Buyers: 3
[2019-01-24 11:57:06]: Serial.no is: 23340
[2019-01-24 11:57:06]: Buyers: 6'
         my_clob
     FROM
         dual
 )
 SELECT
     regexp_substr(my_clob,'Serial.no.*',1,level) AS clob_data
 FROM
     test
 CONNECT BY
     level <= regexp_count(my_clob,'Serial.no.*')
...