O método `nodes ()` mantém a ordem do documento?
Onodes()
método doxml
nós de retorno de tipo de dados na ordem do documento?
Por exemplo, se houver dados como:
declare @xml xml
set @xml = '<Fruits><Apple /><Banana /><Orange /><Pear /></Fruits>'
que é consultado como
select T.c.query('.')
from @xml.nodes('/Fruits/*') T(c)
Os elementos serão devolvidos na ordem do documento? Ordem das linhas retornadas porselect
é conhecido por ser indefinido seorder by
cláusula é omitida. É o caso deselect ... from ... .nodes()
ou é excepcional?
É possível, em algumas circunstâncias, obter um conjunto de linhas não vazio na saída da consulta a seguir:
declare @xml xml
set @xml = '<Data><Element OrderNo="1" /><Element OrderNo="2" />'
+ '<Element OrderNo="3" /><Element OrderNo="4" />'
+ '<Element OrderNo="5" /></Data>'
select * from (
select T.c.value('.', 'int') OrderNo1,
row_number() over (order by @@spid) OrderNo2
from @xml.nodes('/Data/Element/@OrderNo') T(c)) sq
where OrderNo1 != OrderNo2