从 CLOB 列中提取某些行
Extract certain lines from CLOB column
我有一个 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
我希望有一些简单的解决方案,因为我不太了解到目前为止发现的所有内容,在此先感谢。
编辑:
这个returns我一行,第一个:
select regexp_substr(My_CLOB, 'Serial.no.*',1) as clob_data from MyTable
WHERE id='1163753';
它是 CLOB 数据类型的 returns 列,但如果我可以检索所有行,那将不是问题。
这是使用 connect by 子句增加 regexp 索引的技巧。似乎有效
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.*')
我有一个 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
我希望有一些简单的解决方案,因为我不太了解到目前为止发现的所有内容,在此先感谢。
编辑:
这个returns我一行,第一个:
select regexp_substr(My_CLOB, 'Serial.no.*',1) as clob_data from MyTable
WHERE id='1163753';
它是 CLOB 数据类型的 returns 列,但如果我可以检索所有行,那将不是问题。
这是使用 connect by 子句增加 regexp 索引的技巧。似乎有效
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.*')