将varchar(max)字符串分隔到sql server中的列表中

时间:2014-06-25 13:34:03

标签: sql sql-server reporting-services split varcharmax

我将数据保存为1-2-4-5,我希望将它们分成第一个响应= 1,第二个响应= 2,第三个响应= 4,第四个响应= 5,第五个响应= 7。在列中作为varchar(max)并且需要报告这些。有没有办法将它们分成5个不同的行或排序列表?并非所有的列都有5个部分,有些列有更多,有些则更少,所以如果答案灵活,那就更好了。

我正在使用SSRS 2008R2和SQL Server 2008R2

提前谢谢

1 个答案:

答案 0 :(得分:2)

declare @Testdata table (  Data varchar(max))
insert @Testdata select   '1¬2¬4¬5¬7'

;with tmp(DataItem, Data) as (
select   LEFT(Data, CHARINDEX('¬',Data+'¬')-1),
    STUFF(Data, 1, CHARINDEX('¬',Data+'¬'), '')
from @Testdata
union all
select   LEFT(Data, CHARINDEX('¬',Data+'¬')-1),
    STUFF(Data, 1, CHARINDEX('¬',Data+'¬'), '')
from tmp
where Data > ''
)

select * from tmp