sql server 合併字串

2021-08-30 17:21:39 字數 2468 閱讀 7335

描述:將如下形式的資料按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')

gocreate function dbo.f_str(@id int) returns varchar(100)

asbegin

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

endgo

--呼叫函式

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')

goselect 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')

godeclare @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

endfetch my_cursor into @id , @value

endinsert @t values(@id_old , stuff(@s,1,1,''))

close my_cursor

deallocate my_cursor

select * from @t

drop table tb

帖子整理

sqlserver字串合併 merge 方法彙總

方法1 使用游標法進行字串合併處理的示例。處理的資料 create table tb col1 varchar 10 col2 int insert tb select a 1 union all select a 2 union all select b 1 union all select b ...

sqlserver字串合併 merge 方法彙總

方法1 使用游標法進行字串合併處理的示例。處理的資料 create table tb col1 varchar 10 col2 int insert tb select a 1 union all select a 2 union all select b 1 union all select b ...

sqlserver字串合併 merge 方法彙總

方法1 使用游標法進行字串合併處理的示例。處理的資料 create table tb col1 varchar 10 col2 int insert tb select a 1 union all select a 2 union all select b 1 union all select b ...