SqlSerVer 列與逗號分隔字串 互相轉換

2022-01-26 07:33:11 字數 1457 閱讀 2084

在專案中,使用sqlserver資料庫,有乙個需求,需要將資料庫的某一列,轉換成逗號分隔的字串。同時,需要將處理完的字串,轉換成為一列。

經過查閱資料與學習,通過以下方式可以實現如上所述需求:

1、編寫乙個錶值函式,傳入乙個字串,實現轉換成列,條件以逗號分隔(任何符號都可以自定義)

空格分隔的字串    

create

function

[dbo

].[getinstr](

@sourcestr

varchar(2000))--

源字串

returns

@table

table(list varchar(50

) )

asbegin

--select @sourcestr = replace(@sourcestr,';',',')

--select @sourcestr = replace(@sourcestr,' ',',')

--declare @outstr varchar(200)

ifcharindex('

,',@sourcestr)>

0begin

declare

@iint

declare

@nint

set@i=1

while

charindex('

,',@sourcestr,@i)>

0begin

set@n

=charindex('

,',@sourcestr,@i

)

insert

into

@table

values(substring(@sourcestr,@i, @n-@i

) )

set@i=@n

+1endinsert

into

@table

values(substring(@sourcestr,@i,len(@sourcestr)-@i+

1))

endelse

insert

into

@table

values(@sourcestr

)

delete

from

@table

where

isnull(list,'') =

''return

end

view code

2、通過for xml path實現將列轉換成逗號連線的字串

select

stuff((select',

'+欄位名 from 表名 for xml path('')),1,1,'')

stuff函式的意義是去掉組成字串的尾數逗號。

SqlSerVer 列與逗號分隔字串 互相轉換

在專案中,使用sqlserver資料庫,有乙個需求,需要將資料庫的某一列,轉換成逗號分隔的字串。同時,需要將處理完的字串,轉換成為一列。經過查閱資料與學習,通過以下方式可以實現如上所述需求 1 編寫乙個錶值函式,傳入乙個字串,實現轉換成列,條件以逗號分隔 任何符號都可以自定義 複製 空格分隔的字串 ...

mysql 逗號分隔的id轉為逗號分隔的名稱

mysql 的一張表a的某1欄位是用逗號分隔的code,每個code對應在b表的有code和名稱的對應表。如果用語句檢索出,用逗號分隔的名稱拼接在一起。select b.engine number,group concat code name astran name fromt fix code a...

mysql 逗號分隔查詢

商品表 goods 有學校字段 school ids 學校字段 school ids 中儲存學校表 school 的id,如果商品包含多個學校則多個id使用逗號分隔儲存 查詢sql select g.id,g.school ids,group concat s.locality name from ...