Wie kann ich die Reihenfolge der Knoten in einem XML-Dokument finden?Suchen der Knotenreihenfolge im XML-Dokument in SQL Server
Was ich habe, ist ein Dokument wie folgt aus:
<value code="1">
<value code="11">
<value code="111"/>
</value>
<value code="12">
<value code="121">
<value code="1211"/>
<value code="1212"/>
</value>
</value>
</value>
und ich versuche, dieses Ding in eine Tabelle wie
CREATE TABLE values(
code int,
parent_code int,
ord int
)
Erhaltung der Reihenfolge der Werte aus dem XML definiert zu erhalten Dokument (sie können nicht nach ihrem Code sortiert werden). Ich möchte
SELECT code
FROM values
WHERE parent_code = 121
ORDER BY ord
sagen können, und die Ergebnisse sollten, deterministisch, sein
code
1211
1212
ich versucht habe
SELECT
value.value('@code', 'varchar(20)') code,
value.value('../@code', 'varchar(20)') parent,
value.value('position()', 'int')
FROM @xml.nodes('/root//value') n(value)
ORDER BY code desc
Aber es nicht akzeptieren, die position()
Funktion (‘ position()
kann nur innerhalb eines Prädikat- oder XPath-Selektors verwendet werden.
Ich denke, es ist irgendwie möglich, aber wie?
Sie endliche Tiefe von Knoten haben Sie? Wenn nicht, wird es ein Schmerz sein. Und um zu bestätigen: Sie können sich nicht auf Codes verlassen? – gbn
... und welche Ausgabe möchten Sie von der XML? – gbn
Ich habe die Frage aktualisiert, um weitere Informationen bereitzustellen. Und nein, es gibt eine unendliche Tiefe. – erikkallen