Strings aus zwei verschiedenen Zeilen in einer Tabelle verketten
Frage
Wir versuchen, die SQL in einem Produkt zu überarbeiten. Das Produkt speichert XML in einer Tabelle wie folgt:
XML_STORAGE - UID IDENTITY - PARENT_ID INTEGER - SEQ INTEGER - XML VARCHAR(3800)
Die aktuelle Art und Weise, dies zu tun ist wie folgt:
Abrufen alle Zeilen für PARENT_ID = n. gehen Sie dann die abgerufenen Zeilen im Code und verketten die XML-Strings in eine große XML vor Parsen. Die SEQ Spalte wird verwendet, um das Ergebnis zu bestellen, damit können die XML-Strings richtig verkettet werden. Hoffentlich das ist klar.
Was wir versuchen zu tun, ist dies überarbeitet, so dass wir eine SQL-Variante verwenden können, die gesamte Zeichenfolge abrufen und nur einen von DB2 Reihe zurück zu holen. Gibt es eine DB2-Funktion, die es uns ermöglichen, die Zeichenfolge in all diesen Zeilen in eine große Zeichenfolge in der Ergebnismenge verketten. Wie würde eine solche SQL-Look. Lass es mich wissen, bitte. Jede Hilfe ist sehr geschätzt.
Danke! - Azeem
Lösung
Überprüfen Sie rekursive Abfragen in DB2, wie erwähnt hier
Andere Tipps
Ja, es gibt. Lock-up XMLELEMENT
, XMLAGG
und XMLSERIALIZE
. Das sollte es für die meisten Menschen tun. Ein Beispiel, das Sie in der folgenden Frage sehen: Ausgabe einer DB2-SQL-XML-Abfrage auf eine eindeutige XML-Datei
Edit:
Warum gehst du nicht etwas tun, wie select '<tag1>', col1. '</tag1><tag2>', col2, '</tag2>' from table
? Wenn Sie alle Zeilen in einem kombinieren als ein Nachbearbeitungs laufen die Zeilenumbrüche zu entfernen.