SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据

在开始写之前需要先说下这两个函数的用法,

SubString(str,pos,len): 从pos位置截取字符串STR,len个字符

CHARINDEX ( expression1 ,expression2, [ start_location ] ) :expression1查找的字符,expression2要搜索的字符序列, 需要搜索的其实位置

创建一个表,insert如下数据
 

create table test
( code varchar(10),
  single_No varchar(100))

 insert into  test(code,single_No)
 select '001',',201801001,201801004,201801005,201801006,'
 union 
 select '002',',201801002,201801003,201801009,201801007,201801008,'


;with temp as 
( select a.code,a.single_No, charindex(',',a.single_No) as start, charindex(',',a.single_No)-1 as lenth
  from test a
  union all
  select b.code,b.single_No,charindex(',',b.single_No,start+1), charindex(',',b.single_No,start+1)-start-1 as lenth
  from temp b 
  where start<>0
)

select  top(100) percent substring(single_No,start -lenth,lenth) as obj, code
into #te
from temp
where (start <> 0)
order by code 

转换为多行如下图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值