[sql server] 合并字符串
来源:互联网 发布:单片机电子琴设计原理 编辑:程序博客网 时间:2024/05/15 23:43
/*标题:按某字段合并字符串之一(简单合并)
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
时间:2008-11-06
地点:广东深圳
描述:将如下形式的数据按id字段合并value字段。
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id value
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即:group by id, 求 value 的和(字符串相加)
*/
--1、sql2000中只能用自定义的函数解决
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
create function dbo.f_str(@id int)
returns varchar(100)
as
begin
declare @str varchar(1000)
set @str = ''
select @str = @str + ',' + cast(value as varchar) from tb where id = @id
set @str = right(@str , len(@str) - 1)
return @str
end
go
--调用函数
select id , value = dbo.f_str(id) from tb group by id
drop function dbo.f_str
drop table tb
--2、sql2005中的方法
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
select id, [value] = stuff((select ',' + [value] from tb t where id = tb.id for xml path('')) , 1 , 1 , '')
from tb
group by id
drop table tb
--3、使用游标合并数据
create table tb(id int, value varchar(10))
insert into tb values(1, 'aa')
insert into tb values(1, 'bb')
insert into tb values(2, 'aaa')
insert into tb values(2, 'bbb')
insert into tb values(2, 'ccc')
go
declare @t table(id int,value varchar(100))--定义结果集表变量
--定义游标并进行合并处理
declare my_cursor cursor local for
select id , value from tb
declare @id_old int , @id int , @value varchar(10) , @s varchar(100)
open my_cursor
fetch my_cursor into @id , @value
select @id_old = @id , @s=''
while @@FETCH_STATUS = 0
begin
if @id = @id_old
select @s = @s + ',' + cast(@value as varchar)
else
begin
insert @t values(@id_old , stuff(@s,1,1,''))
select @s = ',' + cast(@value as varchar) , @id_old = @id
end
fetch my_cursor into @id , @value
END
insert @t values(@id_old , stuff(@s,1,1,''))
close my_cursor
deallocate my_cursor
select * from @t
drop table tb
- [sql server] 合并字符串
- [sql server] 合并字符串
- 关于SQL Server 中字符串的合并
- SQL Server 2005合并列成字符串 2008-11-07
- Sql Server中三种字符串合并方法的性能比较
- [sql server] 字段合并
- SQL查询合并字符串
- SQL查询合并字符串
- SQL合并字符串
- sql server 多行合并
- SQL Server合并列值
- sql server 分库合并
- SQL Server中的字段合并
- SQL--字符串拆分,合并,替换
- sql server 把多行合并一行,并连接成一个字符串
- 連接SQL Server字符串
- sql server 连接字符串
- SQL Server字符串分割
- 僵尸进程 (Zombie Process)
- 聚类算法之BIRCH(Java实现)
- Android项目开发技术总结
- Shopilex开源网店系统
- OT源代码的分析,OrtHello 迟早攻破你 (三)OTObjectType 和OTMatRef 和OTObject
- [sql server] 合并字符串
- 怎样在Mathtype中输入空格及常用快捷键
- wpa_supplicant更新问题
- linux oracle odbc 应用程序需要的连接串及配置
- G1收集器
- SKyeye中运行uclinux之我的尝试和失败-------最终成功
- 使用Sringlist存放double类型的数据例子。
- lua 调试器(Decoda)
- WINIO.dll 读I/O口数据