我有一行保存数据为1,2,10,4,5,6,7,8,13,16,17,3。 我需要一个查询将它们拆分为序列行。这样1应出现在第1行,2出现在第2行,10出现在第3行................
答案 0 :(得分:2)
使用replace将逗号分隔的字符串转换为xml。然后,您可以使用cross apply将xml的nodes()作为行,并使用value()函数获取节点值。
declare @Str varchar(100) = '1,2,10,4,5,6,7,8,13,16,17,3'
select
r.value('.', 'int') as Val
from (select cast('<r>'+replace(@Str, ',', '</r><r>')+'</r>' as xml)) as x(x)
cross apply
x.nodes('r') as r(r)
如果你需要将它用于表而不是变量,你可以看看这里。 How to split repeating string delimated by commas in T-SQL