sql语句一条记录拆分为多条记录

 

if exists (select 1 from dbo.sysobjects where id = object_id(N't_test'))
drop procedure [dbo].[t_test]
GO
Create table t_test ( id int primary key,LongField varchar(50))
GO
Insert Into t_test (id,LongField)  values('1','aa bb cc dd')
Insert Into t_test (id,LongField)  values('3','ab cc da fm')
GO
if exists (select 1 from dbo.sysobjects where id = object_id(N'f_tstr'))
drop procedure [dbo].[f_tstr]
GO
create  function f_tstr(
        @s varchar(8000), 
        @split varchar(10), 
        @id int )returns @re table(id int ,col varchar(100))
as
begin
if @s is null return
while charindex(@split,@s)>0
        begin
        insert into @re(id,col)select @id,left(@s,charindex(@split,@s)-1)
        set @s=right(@s,len(@s)-charindex(@split,@s))
        end
        insert into @re(id,col) select @id, @s        return
end
GO
if exists (select 1 from dbo.sysobjects where id = object_id(N't_test1'))
drop procedure [dbo].[t_test1]
GO
Create table t_test1 ( id int,ShortField varchar(50))
GO
declare @M int
select @M=max(id) from t_test
while @M>0
        begin                
        declare @a varchar (200)
                ,@b varchar(20)
        select @a=id,@b=LongField from t_test where id =@M        
        insert into t_test1(id,ShortField) select * from dbo.f_tstr(@b,' ',@a)
        set @M=@M-1
        set @a=null
        set @b=null
        end
GO
select * from t_test1
GO
drop table t_test
drop table t_test1
drop function DBO.f_tstr
GO


文章出处:

http://blog.csdn.net/zyyjc/article/details/7577088

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值