首页 > 代码库 > SQL SERVER 拆分列为多行
SQL SERVER 拆分列为多行
--创建测试表create table #temp (seq int identity,names varchar(200))insert into #temp(names)values(‘张三,李四‘),(‘中国,美国,巴西‘),(‘深圳,上海,北京,广州,哈尔滨‘),(‘足球,篮球,乒乓球,台球‘)
目的是要将用逗号分隔的names列拆分为多行,最终要产生的结果为:
1 张三
1 李四
2 中国
2 美国
2 巴西
3 深圳
3 上海
3 北京
3 广州
3 哈尔滨
4 足球
4 篮球
4 乒乓球
4 台球
1 ;with cte as( 2 select 0 as n 3 union all 4 select N+1 from cte where n<100 5 ) 6 ,idx as ( 7 select a.seq,b.n,ROW_NUMBER() over (partition by a.seq order by b.n) as id,‘,‘+a.names+‘,‘ as names 8 from #temp a 9 inner join cte b on b.n<=len(‘,‘+a.names+‘,‘ )10 where SUBSTRING(‘,‘+a.names+‘,‘,b.n,1)=‘,‘11 )12 select a.seq,substring(a.names,a.n+1,b.n-a.n-1) as name13 from idx a14 inner join idx b on a.seq=b.seq and a.id=b.id-1
SQL SERVER 拆分列为多行
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。