Ich versuche im Grunde umzukehren, was diese Frage verlangt ... SQL Server-Abfrage-XML-Attribut für einen Elementwert
Ich muss eine Ergebnismenge von "row" -Elementen erzeugen, die eine Gruppe von "field" -Elementen mit einem Attribut enthalten, das den Schlüssel definiert.
%Vor%Ich habe eine Abfrage, die das zurückgibt ...
%Vor% Verwendung von FOR XML PATH ('row'), ROOT ('resultset')
in meiner SQL-Anweisung.
Was vermisse ich? Danke.
Es ist ein wenig in SQL Server beteiligt - das normale Verhalten ist das, was Sie sehen - die Spaltennamen werden als XML-Elementnamen verwendet.
Wenn Sie wirklich möchten, dass alle XML-Elemente gleich benannt werden, müssen Sie einen Code wie diesen verwenden:
%Vor% Dies ist erforderlich, um sicherzustellen, dass der Spaltenname als name
-Attribut für das <field>
-Element verwendet wird und die leere Zeichenfolge erforderlich ist, damit der SQL-XML-Parser nicht über das name
-Attribut verwirrt wird gehört zu welchem Element ......
Sie können dies tun, ohne dass Sie die Spalten als Konstanten angeben müssen, und Sie können auch select *
verwenden. Es ist etwas komplizierter als die Antwort von marc_s und es wird sehr viel langsamer ausgeführt werden.
Die Abfrage erstellt eine abgeleitete Tabelle, in der jede Zeile eine XML-Datei enthält, die ungefähr so aussieht:
%Vor% Diese XML wird dann mit nodes()
und local-name(.)
zerkleinert, um die gewünschte Form zu erstellen.
Tags und Links sql sql-server xml