server多列转行 sql_sql server 2005一列转成多行

给个以前写的例子你看看,正好就是解决你的需求的。

如下代码在sqlserver 2005 上运行测试通过

create table tbl2

(

c1 varchar(100),

c2 varchar(100)

)

insert into tbl2

values('01','g,x,z');

insert into tbl2

values('02','m,f,k');

create function fn_split(@strings nvarchar(4000),@splitChar nvarchar(100))

returns @splitTbl table (col nvarchar(1000))

as

begin

declare @CI int;

declare @splitItem nvarchar(1000);

set @CI=charIndex(@splitChar,@strings);

while @CI>0

begin

set @splitItem=substring(@strings, 1, @CI-1);

set @strings=substring(@strings, @CI+len(@splitChar),len(@strings)-@CI);

set @CI=charIndex(@splitChar,@strings);

insert @splitTbl select @splitItem;

end

insert @splitTbl select @strings;

return;

end

create function fn_GetSplitList()

returns @splitTable table(c1 varchar(100), c2 varchar(100))

as

begin

declare @c1 varchar(100),@c2 varchar(100);

declare c_cursor1 cursor

for select c1,c2 from tbl2;

open c_cursor1;

fetch next from c_cursor1 into @c1,@c2;

while @@fetch_status=0

begin

insert into @splitTable

select @c1, col from dbo.fn_split(@c2,',');

fetch next from c_cursor1 into @c1,@c2;

end

close c_cursor1;

deallocate c_cursor1;

return;

end

select * from dbo.fn_GetSplitList();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值