Использует ли метод nodes()
типа данных типа xml
в узле документа?
Например, если есть такие данные, как:
declare @xml xml
set @xml = '<Fruits><Apple /><Banana /><Orange /><Pear /></Fruits>'
который запрашивается как
select T.c.query('.')
from @xml.nodes('/Fruits/*') T(c)
будут возвращены элементы в порядке документа? Порядок строк, возвращаемых select
, как известно, undefined, если предложение order by
опущено. Это имеет место для select ... from ... .nodes()
, или это исключительный?
Возможно ли в некоторых случаях получить непустой набор строк в выводе следующего запроса:
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