sqlserver字串合併 merge 方法彙總

2021-08-29 17:49:53 字數 3038 閱讀 9931

--方法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',2

union all select 'b',3

--合併處理

--定義結果集表變數

declare @t table(col1 varchar(10),col2 varchar(100))

--定義游標並進行合併處理

declare tb cursor local

forselect col1,col2 from tb order by  col1,col2

declare @col1_old varchar(10),@col1 varchar(10),@col2 int,@s varchar(100)

open tb

fetch tb into @col1,@col2

select @col1_old=@col1,@s=''

while @@fetch_status=0

begin

if @col1=@col1_old

select @s=@s+','+cast(@col2 as varchar)

else

begin

insert @t values(@col1_old,stuff(@s,1,1,''))

select @s=','+cast(@col2 as varchar),@col1_old=@col1

endfetch tb into @col1,@col2

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

close tb

deallocate tb

--顯示結果並刪除測試資料

select * from @t

drop table tb

/*--結果

col1       col2

---------- -----------

a          1,2

b          1,2,3

--*/

go--方法2

--使用使用者定義函式,配合select處理完成字串合併處理的示例

--處理的資料

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',2

union all select 'b',3

go--合併處理函式

create function dbo.f_str(@col1 varchar(10))

returns varchar(100)

asbegin

declare @re varchar(100)

set @re=''

select @re=@re+','+cast(col2 as varchar)

from tb

where col1=@col1

return(stuff(@re,1,1,''))

endgo

--呼叫函式

select col1,col2=dbo.f_str(col1) from tb group by col1

--刪除測試

drop table tb

drop function f_str

/*--結果

col1       col2

---------- -----------

a          1,2

b          1,2,3

--*/

go--方法3

--使用臨時表實現字串合併處理的示例

--處理的資料

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',2

union all select 'b',3

--合併處理

select col1,col2=cast(col2 as varchar(100))

into #t from tb

order by col1,col2

declare @col1 varchar(10),@col2 varchar(100)

update #t set

@col2=case when @col1=col1 then @col2+','+col2 else col2 end,

@col1=col1,

col2=@col2

select * from #t

/*--更新處理後的臨時表

col1       col2

---------- -------------

a          1

a          1,2

b          1

b          1,2

b          1,2,3

--*/

--得到最終結果

select col1,col2=max(col2) from #t group by col1

/*--結果

col1       col2

---------- -----------

a          1,2

b          1,2,3

--*/

--刪除測試

drop table tb,#t

go

sql server 合併字串

描述 將如下形式的資料按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中只能用自定義的函式...

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 ...