SqlSerVer列与逗号分隔字符串互相转换
在项⽬中,使⽤SQLServer数据库,有⼀个需求,需要将数据库的某⼀列,转换成逗号分隔的字符串。同时,需要将处理完的字符串,转换成为⼀列。
经过查阅资料与学习,通过以下⽅式可以实现如上所述需求:
1、编写⼀个表值函数,传⼊⼀个字符串,实现转换成列,条件以逗号分隔(任何符号都可以⾃定义)
//空格分隔的字符串
CREATE FUNCTION[dbo].[GetInStr]
(@SourceStr varchar(2000))--源字符串
RETURNS@table table(list varchar(50) )
AS
BEGIN
-- 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
end
insert 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函数的意义是去掉组成字符串的尾数逗号。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论