在项目中,使用SQLServer数据库,有一个需求,需要将数据库的某一列,转换成逗号分隔的字符串。同时,需要将处理完的字符串,转换成为一列。
经过查阅资料与学习,通过以下方式可以实现如上所述需求:
1、编写一个表值函数,传入一个字符串,实现转换成列,条件以逗号分隔(任何符号都可以自定义)
--该函数把传递过来的字符串转换成IN 后面的列表,可以处理以分号,逗号以及空格分隔的字符串
CREATE FUNCTION [dbo].[GetInStr]
(@SourceStr varchar(2000))--源字符串
RETURNS @table table(list varchar(50) )
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
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
2、通过for XML Path实现将列转换成逗号连接的字符串
SELECT STUFF((SELECT ','+字段名 FROM 表名 for xml path('')),1,1,'')
STUFF函数的意义是去掉组成字符串的尾数逗号。
函数仅适用于 SQL Server 2016 及更高版本。如果你使用的是较老的版本,可以考虑自定义函数或使用其他方法来实现字符串分割。函数将逗号分隔的字符串进行分割,并将每个分割后的字符串作为一行返回。在 SQL Server 中,可以使用。
1、方法一
WITH A AS (SELECT '香港,张家港,北京,上海' A FROM DUAL)
SELECT DECODE(B,0,SUBSTR(A,C),SUBSTR(A,C,B-C)) city FROM
--该函数用于把一个用逗号分隔的多个数据字符串变成一个表的一列,例如字符串’1,2,3,4,5’ 将编程一个表,这个表
Begin
set @str = @str+','
Declare @inse...
在高级语言中,很容易编写带有数组参数的函数。但在数据库的存储过程中却没有那么容易,因为存储过程的参数只能以一些基本类型作为参数。我们希望数组作为参数的情况是很常见的,例...
在开发过程中时常遇到把字符串数字转换为文字的需求,在sql中如何实现呢,这就需要用到GROUP_CONCAT()+case when来实现,GROUP_CONCAT能够把我们需要查询的数据以逗号分隔开(默认为逗号),当然也可以自己设置分隔符号。mode数字对应的中文意思1.正常维修 2.设备更换 3.配件更换 4.其他方式。我查询到了id为519的mode的类型数据,以逗号分隔开。ok,这个转换就完成了。