如果要重新排序现有的xml,可以使用
XQuery:
declare @data xml = '<test> <tree abc="123"/> <tree abc="789"/> <tree-order abc="456"/></test>'select @data.query('<test>{for $i in test/* order by $i/@abc return $i}</test>')结果:
<test> <tree abc="123" /> <tree-order abc="456" /> <tree abc="789" /></test>
[sql fiddle demo](http://sqlfiddle.com/#!3/d41d8/26941)
更新:
要对多个节点重新排序,可以使用XQuery,如下所示:
select @data.query(' element Main { for $j in Main/test return element test { for $i in $j/* order by $i/@abc return $i } }')[sql fiddle demo](http://sqlfiddle.com/#!3/d41d8/26968)
更新2
要按属性的整数值排序,请使用
cast as <type>:
select @data.query(' element Main { for $j in Main/test return element test { for $i in $j/* order by $i/@abc cast as xs:integer? return $i } }')[sql fiddle demo](http://sqlfiddle.com/#!3/d41d8/26982)



