添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在项目中,使用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,这个转换就完成了。