当前位置: 代码迷 >> Sql Server >> sql 查询瓜分
  详细解决方案

sql 查询瓜分

热度:74   发布时间:2016-04-24 08:53:12.0
sql 查询分割

求分割userid: 3721,3722,3723,3725
分割成 
3721
3722
3723
3725这样子,不用创建表 求查询方法,能统计更好
------解决思路----------------------
用CTE的递归可以解决
------解决思路----------------------
declare @str varchar(20)='3721,3722,3723,3725'

set @str+=','
;with cte as
(
select LEFT(@str,CHARINDEX(',',@str)-1) as strs,RIGHT(@str,LEN(@str)-CHARINDEX(',',@str)) as val
union all
select LEFT(val,CHARINDEX(',',val)-1) as strs,RIGHT(val,LEN(val)-CHARINDEX(',',val)) as val
from cte
where LEN(val)>0
)
select strs from cte


strs
--------------------
3721
3722
3723
3725

(4 行受影响)

------解决思路----------------------
参考一下这个脚本

DECLARE @str VARCHAR(20)='3721,3722,3723,3725'
DECLARE @xml XML

SET @xml = '<row>'+REPLACE(@str,',','</row><row>')+'</row>'

SELECT 
T.c.value('.','nvarchar(32)') AS Nums
FROM 
@xml.nodes('/row') T(c)

  相关解决方案