【发布时间】:2017-05-20 23:39:53
【问题描述】:
我需要按字母顺序对属性名称进行排序,并且我创建了以下代码,但它保留了 xml:
DECLARE @xml XML = N'<tt>
<cpost s="a" cena="0.0000" cpost_id="16385" flprt="1" moq="0"
valuta_id="2" nmatr_id="14117" norg_id="1791" />
</tt>'
SELECT
t.query('.')
FROM @xml.nodes('*/*') AS t(t)
ORDER BY t.value('local-name(.)','nvarchar(max)')
FOR XML PATH(''), TYPE, ROOT('tt')
我在哪里做错了?
【问题讨论】:
-
我认为不可能保留基于属性的排序。试试看这个msdn.microsoft.com/en-us/library/ms187107(v=sql.90).aspx
-
看this link。保留元素的排序顺序,但不保留属性的顺序。有一种叫做“规范 XML”的东西,但问题是:为什么需要它? AFAIC 没有 pretty 或 elegant 方法来实现这一目标......
标签: sql-server xml tsql