Come trovare l'ordine dei nodi in un documento XML?Ricerca dell'ordine nodo nel documento XML in SQL Server
Quello che ho è un documento come questo:
<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>
e sto cercando di ottenere questa cosa in una tabella definita come
CREATE TABLE values(
code int,
parent_code int,
ord int
)
Preservare l'ordine dei valori dal XML documento (non possono essere ordinati dal loro codice). Voglio essere in grado di dire
SELECT code
FROM values
WHERE parent_code = 121
ORDER BY ord
ed i risultati dovrebbero, in modo deterministico, essere
code
1211
1212
ho cercato
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
Ma non accetta la funzione position()
(' position()
'può essere utilizzato solo all'interno di un predicato o selettore XPath).
Immagino sia possibile in qualche modo, ma come?
Hai profondità finita di nodi? Altrimenti, sarà un dolore. E per confermare: non puoi fare affidamento sui codici? – gbn
... e quale output vuoi dall'xml? – gbn
Ho aggiornato la domanda per fornire ulteriori informazioni. E no, c'è una profondità infinita. – erikkallen