2010-03-22 192 views
1

我們正試圖重做產品中的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

回答

0

入住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

0

是的,有。鎖定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