连接来自表中两个不同行的字符串

问题描述:

我们正试图重做产品中的SQL。该产品存储在XML表格如下:连接来自表中两个不同行的字符串

XML_STORAGE 
- UID IDENTITY 
- PARENT_ID INTEGER 
- SEQ INTEGER 
- XML VARCHAR(3800) 

这样做的当前方法如下:

检索所有行的PARENT_ID = N。然后在代码中检查提取的行并在解析之前将XML字符串连接成一个大的XML。 SEQ列用于对结果进行排序,以便可以正确地连接XML字符串。希望这是明确的。

我们试图做的是重做这个,所以我们可以使用SQL变体来检索整个字符串并从DB2中取回一行。有没有DB2函数可以让我们将所有这些行中的字符串连接成结果集中的一个大字符串。这样的SQL将如何看待。请告诉我。任何帮助深表感谢。

谢谢! - Azeem

入住DB2递归查询,如提及here

+0

戈兰,感谢您的信息。我现在检查一下。 – Azeem 2010-03-22 20:12:53

+0

不幸的是,Goran不能使用公用表表达式或递归查询,因为我们需要支持DB2 z.OS v8 CM(这是有效的DB2 v7)。它看起来不像DB2 v7支持公用表表达式语法。 :( – Azeem 2010-03-22 20:25:33

+0

没有该版本来测试它,但v7 SQL参考ftp://ftp.software.ibm.com/ps/products/db2/info/vr7/pdf/letter/db2s0e70.pdf说你可以。例如在pdf的页面1341(啊,IBM手册的4位页码:)) – Unreason 2010-03-24 10:52:05

是的,有。锁定XMLELEMENT,XMLAGGXMLSERIALIZE。这应该为大多数人提供窍门。你可以在以下问题看一个例子Output a DB2 SQL XML query to a unique XML file

编辑:

你为什么不这样做select '<tag1>', col1. '</tag1><tag2>', col2, '</tag2>' from table?如果您需要将所有行合并为一个,则需要运行后处理以删除换行符。

+0

感谢信息彼得。不幸的是,鉴于这是DB2 V7,我们没有使用XML特定的DB2语法的优点。 :( – Azeem 2010-03-22 20:12:23