SQL SERVER 字符拆分列为多行

本文通过一个具体的例子展示了如何使用SQLServer中的递归公共表表达式(CTE)来处理包含多个兴趣爱好的数据。通过递归CTE,可以有效地将一个字符串中的多个爱好拆分为多行记录,为数据处理提供了灵活的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:先学习sql server里的递归CTE。

假设有兴趣表Hobbys

NameHobby
小张篮球,足球,羽毛球

 

 

 

NameHobby
小张篮球
小张足球
小张羽毛球

 

 

 

 

 

采用【递归cte】

with tempHobbys as (select Name,Hobby,charindex(',',Hobby)-1 endindex,0 startindex from Hobbys 
union all 
select Name,Hobby,charindex(',',Hobby,endindex+2)-1 endindex,endindex+2 startindex from tempHobbys where endindex>-1),
with tempHobbys 2 as (select Name,Hobby,(case when endindex<0 then len(Hobby) else Hobby end) endindex,startindex from tempHobbys)
select Name,substring(Hobby,startindex,endindex-startindex+1) Hobby from tempHobbys2

 

转载于:https://www.cnblogs.com/itsone/p/10237074.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值