您的位置:首页 > 数据库

XML 方法对SQL列表中的值进行重新排序

2010-08-02 14:41 295 查看
XML 方法对SQL列表中的值进行重新排序
/*
最近在看问题的时候看到用xml方法对SQL列表的重新排序,
方法一为原来提供的方法,方法二为后来想到的方法。
此处没有的写法,有兴趣的可以补全。
*/

declare @t table ( id int,valuelist varchar(200))
insert @t select 1,'1,43,3,2'
insert @t select 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 tb where 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: