2010-03-22 2 views
1

Nous essayons de retravailler le SQL dans un produit. Le produit stocke XML dans un tableau comme suit:concaténation de chaînes à partir de deux lignes différentes dans une table

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

La façon actuelle de faire est la suivante:

pour récupérer toutes les lignes PARENT_ID = n. Ensuite, parcourez les lignes récupérées dans le code et concaténez les chaînes XML en un grand XML avant d'analyser. La colonne SEQ est utilisée pour ORDER le résultat afin que les chaînes XML puissent être concaténées correctement. J'espère que c'est clair. Ce que nous essayons de faire est de retravailler ceci afin que nous puissions utiliser une variante SQL pour récupérer la chaîne entière et récupérer simplement une ligne de DB2. Y at-il une fonction DB2 qui nous permettra de concaténer la chaîne de toutes ces lignes en une seule grande chaîne dans le jeu de résultats. À quoi ressemblerait un tel SQL? S'il vous plaît, faites-moi savoir. Toute aide est très appréciée.

Merci! - Azeem

Répondre

0

Vérifiez les requêtes récursives dans DB2, comme mentionné here

+0

Goran, merci pour l'info. Je vais vérifier ça maintenant. – Azeem

+0

Goran, malheureusement, je ne peux pas utiliser des expressions de table communes ou des requêtes récursives en raison de l'exigence que nous supportons DB2 z.OS v8 CM (qui est en vigueur DB2 v7). Il ne semble pas que DB2 v7 prenne en charge la syntaxe des expressions de table commune. :( – Azeem

+0

n'ont pas cette version pour le tester, mais v7 SQL référence ftp://ftp.software.ibm.com/ps/products/db2/info/vr7/pdf/letter/db2s0e70.pdf dit que vous pouvez exemple sur la page du pdf 1341 (ah, les numéros de page à 4 chiffres des manuels IBM :) :) – Unreason

0

Oui, il y a. Verrouiller XMLELEMENT, XMLAGG et XMLSERIALIZE. Cela devrait faire l'affaire pour la plupart des gens. Un exemple, vous pouvez voir dans la question suivante Output a DB2 SQL XML query to a unique XML file

Edit:

Pourquoi ne pas vous faire quelque chose comme select '<tag1>', col1. '</tag1><tag2>', col2, '</tag2>' from table? Si vous devez combiner toutes les lignes en une, exécutez un post-traitement pour supprimer les sauts de ligne.

+0

Merci pour l'info Peter. Malheureusement, étant donné qu'il s'agit de DB2 v7, nous n'avons pas le luxe d'utiliser la syntaxe DB2 spécifique à XML. :( – Azeem

Questions connexes