将单行拆分为多行[重复]

  可能重复:   查询将行数据显示为列 我有一行保存数据为1,2,10,4,5,6,7,8,13,16,17,3。 我需要一个查询将它们拆分为序列行。这样1应出现在第1行,2出现在第2行,10出现在第3行................     
已邀请:
使用replace将逗号分隔的字符串转换为xml。然后,您可以使用交叉应用将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)
如果你需要将它用于表而不是变量,你可以看看这里。如何在T-SQL中拆分用逗号表示的重复字符串     

要回复问题请先登录注册