如何通过DB2 select语句本身解析CLOB cloumn?

时间:2017-04-26 13:56:58

标签: sql db2

我有一个CLOB列的表(文本用新行或逗号分隔)。 例如。 CLOBCOLUM =“name1,name2,name3 ......” 我可以阅读它并通过Java解析(逐行)

String rowName;
Clob clob = rs.getClob("CLOBCOLUM ");
BufferedReader bufferRead = new BufferedReader(clob.getCharacterStream());

while ((rowName = bufferRead.readLine()) != null) {
   ..............

但我想通过DB2本身解析它。即获取CLOB列数据并将其逐行插入另一个表中。这样的事情:

INSERT INTO TABLE1 (ID, COLUMN1) VALUES (SELECT ID, CLOBCOLUM???? FROM TABLE2)

或MERGE声明甚至更好。 所以表TABLE1看起来像这样:

ID   COLUMN1
1    name1
1    name2
1    name3

这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用递归查询执行此操作:

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 > ''