我在表中的 CLOB 中有以下文本
表名:tbl1
列
col1 - 数字(主键)
col2 - clob(如下)
Row#1
-----
Col1 = 1
Col2 =
1331882981,ab123456,这里
有一些文本可以运行多行并且有很多文本...
~1331890329,pqr123223,更多文本...
Row#2
-----
Col1 = 2
Col2 =
1331882981,abc333,这里
的一些文本可以运行多行和有很多文字...
~1331890329,pqrs23,还有一些文字...
现在我需要知道我们如何才能得到低于输出
Col1 值
---- -------------- --------
1 1331882981,ab123456
1 1331890329,pqr123223
2 1331882981,abc333
2 1331890329,pqrs23
([0-9]{10},[az 0-9]+.), ==> 这是匹配“1331890329,pqrs23”的正则表达式,我需要知道如何替换哪些不匹配这个正则表达式和然后将它们分成多行
EDIT#1
我在 Oracle 10.2.0.5.0 上,因此不能使用 REGEXP_COUNT 函数:-(另外,col2 是一个很大的 CLOB
EDIT#2
我试过下面的查询,它适用于一些记录(即如果我添加一个“where”子句)。但是当我删除“where”时,它永远不会返回任何结果。我试图把它放到一个视图中并插入一个表中,让它在一夜之间运行,但它仍然没有完成:(
with t as (select col1, col2 from temp_table)
select col1,
cast(substr(regexp_substr(col2, '[^~]+', 1, level), 1, 50) as
varchar2(50)) data
from t
connect by level <= length(col2) - length(replace(col2, '~')) + 1
编辑#3
Clob Total 中的字符数 ------------ ----- 0 - 1k 3196 1k - 5k 2865 5k - 25k 661 25k - 100k 36 > 100k 2 ------------ ----- 总计 6760
我有大约 7k 行 clob,其分布如上所示......