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里的数据:
拆分后的数据: