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

2022-09-23 22:18:16 字數 1154 閱讀 9113

在專案中,使用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)

if charindex(',',@sourcestr)>0

begin

declare @i int

declare @n int

set @i=1

while charindex(',',@sourcestr,@i)>0

begin

set @n=charindex(',',@sourcestr,@i)

insert into @table values(substring(@sourcestr,@i, @n-@i) )

set @i=@n+1

endinsert into @table values(substring(@sourcestr,@i,len(@sourcestr)-@i+1))

end else insert into @table values(@sourcestr)

delete from @table where isnull(list,'') = ''

return

end複製**

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

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

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

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

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

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