SQL Server:FOR XML按属性排序控制

 赖雨蓉744_128 发布于 2023-02-10 10:31

我正在从SQL Server查询生成XML文件.

我有一些关于排序元素问题的问题.

例如,有如下简单的代码.


    
    
    

正如你所看到的,树和树顺序是不同的元素,我想按属性排序


    
    
    

像这样.

谁有好主意解决这个问题?

谢谢.

对不起,我有详细问题如下

AS是

 

成为 :

1 个回答
  • 如果要重新排序现有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

    更新:

    要重新排序多个节点,您可以像这样使用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

    更新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

    2023-02-10 10:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有