SQL 字符串累加

现在想实现一个字符串累加的问题,表结构如下:  
F_ID   F_Name  
1      'aaaaa'  
1      'bbbb'  
1      'ccc'  

要求想用一条SQL语句实现以下的效果:  
F_ID   F_Name  
1   'aaaaa,bbbb,ccc'  

尽量不声明变量,不用临时表,只用SQL语句能不能实现!  


--实现
create   table   tb   ([F_ID]   int,memo   varchar(10))    
insert   into   tb   select   1,'aaaaa'  
union   all   select   1,'bbbb'

--(方法一)字符串直接累加 
create function FC_StrAdd(@id int)  
returns varchar(100)  
as  
begin  
 declare @strSql varchar(1000)  
 set @strSql=''  
 select @strSql=@strSql+','+cast(F_Name as varchar) from tb where
F_ID=@id  
 return stuff(@strSql,1,1,'')  
end  
 
select [F_ID],dbo.FC_StrAdd(F_ID) as F_Name from tb group by F_ID


--(方法二)可以用游标实现 
create function FC_StrAdd(@id int)  
returns varchar(100)
as
begin
declare @temp varchar(10)
declare @strRet varchar(100)  
set @str=''  
declare cur cursor for select F_Name from tb where
F_ID=@id
open cur  
fetch next from cur into @temp  
while @@fetch_status=0  
begin    
 set @strRet=@strRet+@temp    
 fetch next from cur into @temp  
end  
close cur  
deallocate cur 
return @strRet
end

select [F_ID],dbo.FC_StrAdd(F_ID) as F_Name from tb group by F_ID

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值