SQL Server : FOR XML sorting control by attribute

前端 未结 1 1198
南方客
南方客 2021-01-05 09:19

I am generating a XML file from a SQL Server query.

I have some problem about sorting elements issues.

For example, there is simple code as below.

         


        
1条回答
  •  粉色の甜心
    2021-01-05 09:58

    If you want to reorder existing xml, you can use XQuery:

    declare @data xml = '
    
        
        
        
    
    '
    
    select @data.query('{for $i in test/* order by $i/@abc return $i}')
    

    Result:

    
      
      
      
    
    

    sql fiddle demo

    update:

    To reorder multiple nodes, you can use XQuery like this:

    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

    update 2

    To order by integer values of attributes, use cast as :

    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

    0 讨论(0)
提交回复
热议问题