sql server 将表中某字段按照分隔符拆分为多行

1、建一个空表,并且将表里填充自增的正数。sql如下:

create table Number(n int)
declare @a int
set @a=1
while @a<=4000
begin
insert into Number values(@a);
set @a=@a+1
end

表中是1-4000的正整数。

select * from Number

表中数据如下:

2、声明一个表变量,将表变量里的某个字段按照分隔符“,”分隔出多行:

DECLARE @TB AS TABLE (C1 INT,C2 VARCHAR(20),C3 VARCHAR(200))
INSERT INTO @TB(C1,C2,C3)
SELECT 1 AS C1,'A','asd,b,c'
UNION 
SELECT 2,'A','a,b'
UNION 
SELECT 3,'B','a,b'
UNION 
SELECT 4,'C','a,b'

SELECT * FROM @TB
  
select C1,
       C2,
       SUBSTRING(t.c3, n ,CHARINDEX(',',t.c3+',',n)-n) as c3
from @TB t,Number s
where SUBSTRING(','+t.c3,s.n,1) = ','

 拆分前表变量@TB里的数据:

拆分后的数据:

 

posted on 2017-05-03 16:25  屁宝  阅读(1835)  评论(0编辑  收藏  举报