1. 程式人生 > >XML 方法對SQL列表中的值進行重新排序

XML 方法對SQL列表中的值進行重新排序

XML方法對SQL列表中的值進行重新排序

/*

最近在看問題的時候看到用xml方法對SQL列表的重新排序,

方法一為原來提供的方法,方法二為後來想到的方法。

此處沒有的寫法,有興趣的可以補全。

*/

declare @t table ( id int,valuelist varchar(200))

insert @tselect 1,'1,43,3,2'

insert @tselect 2,'233,100,4455,323,223'

--方法一

;with tb as(

select id,value from @t

cross apply(select xmlcode=CAST('<row>'

+replace(valuelist,',','</row><row>')+'</row>' as xml)) c0

cross apply xmlcode.nodes('/row')c1(xmlcode1)

cross apply(select value=c1.xmlcode1.value('.','int')) c2

)

select id

,replace((select value as 'data()'from tbwhere a.id=id order by value for xml path('')),' ',',')as datalist

from

@t a

--方法二

select id,replace(xmlcode1.value('.','varchar(200)'),' ',',') as datalist from @t

cross apply(select xmlcode=CAST('<row>'+replace(valuelist,',','</row><row>')+'</row>' as xml)) c0

cross apply(select xmlcode1=xmlcode.query('

<e>{for $i in /row

order by  $i

return data($i)

}

</e>

')) c1