SQL怎么按某字段合并字符串
本文小编为大家详细介绍“SQL怎么按某字段合并字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQL怎么按某字段合并字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
标题:按某字段合并字符串之一(简单合并)
描述:将如下形式的数据按id字段合并value字段。id value----- ------1 aa1 bb2 aaa2 bbb2 ccc需要得到结果:id value------ -----------1 aa,bb2 aaa,bbb,ccc即:group by id, 求 value 的和(字符串相加)
1、sql2000中只能用自定义的函数解决
createtabletb(idint,valuevarchar(10))insertintotbvalues(1,'aa')insertintotbvalues(1,'bb')insertintotbvalues(2,'aaa')insertintotbvalues(2,'bbb')insertintotbvalues(2,'ccc')gocreatefunctiondbo.f_str(@idint)returnsvarchar(100)asbegindeclare@strvarchar(1000)set@str=''select@str=@str+''+cast(valueasvarchar)fromtbwhereid=@idset@str=right(@str,len(@str)-1)return@strendgo--调用函数selectid,value=dbo.f_str(id)fromtbgroupbyiddropfunctiondbo.f_strdroptabletb
2、sql2005中的方法
createtabletb(idint,valuevarchar(10))insertintotbvalues(1,'aa')insertintotbvalues(1,'bb')insertintotbvalues(2,'aaa')insertintotbvalues(2,'bbb')insertintotbvalues(2,'ccc')goselectid,[value]=stuff((select','+[value]fromtbtwhereid=tb.idforxmlpath('')),1,1,'')fromtbgroupbyiddroptabletb
3、使用游标合并数据
createtabletb(idint,valuevarchar(10))insertintotbvalues(1,'aa')insertintotbvalues(1,'bb')insertintotbvalues(2,'aaa')insertintotbvalues(2,'bbb')insertintotbvalues(2,'ccc')godeclare@ttable(idint,valuevarchar(100))--定义结果集表变量--定义游标并进行合并处理declaremy_cursorcursorlocalforselectid,valuefromtbdeclare@id_oldint,@idint,@valuevarchar(10),@svarchar(100)openmy_cursorfetchmy_cursorinto@id,@valueselect@id_old=@id,@s=''while@@FETCH_STATUS=0beginif@id=@id_oldselect@s=@s+','+cast(@valueasvarchar)elsebegininsert@tvalues(@id_old,stuff(@s,1,1,''))select@s=','+cast(@valueasvarchar),@id_old=@idendfetchmy_cursorinto@id,@valueENDinsert@tvalues(@id_old,stuff(@s,1,1,''))closemy_cursordeallocatemy_cursorselect*from@tdroptabletb
读到这里,这篇“SQL怎么按某字段合并字符串”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。