Sql 如何通过DB2SELECT语句本身解析CLOB cloumn?
我有一个带有CLOB列的表(文本由新行或逗号分隔)。 例如,CLOBCOLUM=“name1,name2,name3…” 我可以阅读它并用Java(逐行)进行解析 但是我想用DB2本身来解析它。即获取CLOB列数据并将其逐行插入另一个表中。诸如此类:Sql 如何通过DB2SELECT语句本身解析CLOB cloumn?,sql,db2,Sql,Db2,我有一个带有CLOB列的表(文本由新行或逗号分隔)。 例如,CLOBCOLUM=“name1,name2,name3…” 我可以阅读它并用Java(逐行)进行解析 但是我想用DB2本身来解析它。即获取CLOB列数据并将其逐行插入另一个表中。诸如此类: INSERT INTO TABLE1 (ID, COLUMN1) VALUES (SELECT ID, CLOBCOLUM???? FROM TABLE2) 或者合并语句更好。 因此,表1如下所示: ID COLUMN1 1 name1
INSERT INTO TABLE1 (ID, COLUMN1) VALUES (SELECT ID, CLOBCOLUM???? FROM TABLE2)
或者合并语句更好。
因此,表1如下所示:
ID COLUMN1
1 name1
1 name2
1 name3
这可能吗?您可以通过递归查询实现这一点:
WITH t(i,v,c) AS
(
SELECT id,'',clobcolum FROM TABLE2
UNION ALL
SELECT i,SUBSTR(c,1,POSSTR(c,',')-1),SUBSTR(c,POSSTR(c,',')+1) FROM t WHERE POSSTR(c,',') > 0
UNION ALL
SELECT i,c,'' FROM t WHERE c>'' AND POSSTR(c,',') = 0
)
SELECT i,v FROM t WHERE v > ''
仅从“选择零件”开始。你能写一个吗,你几乎完成了。那么我如何选择将CLOB提取为数组呢?可能是在存储过程中完成的。
WITH t(i,v,c) AS
(
SELECT id,'',clobcolum FROM TABLE2
UNION ALL
SELECT i,SUBSTR(c,1,POSSTR(c,',')-1),SUBSTR(c,POSSTR(c,',')+1) FROM t WHERE POSSTR(c,',') > 0
UNION ALL
SELECT i,c,'' FROM t WHERE c>'' AND POSSTR(c,',') = 0
)
SELECT i,v FROM t WHERE v > ''