SQL Server将一段字符串根据特定分隔符转换成一个表变量

         在sql server里,调用存储过程时,经常需要将数据拼成字符串做为参数调用存储过程方便批量数据一次性调用,而在储存过程中分割字符串虽然简单但麻烦,在这里我们封装了dbo.Fn_convertstringtotablestring函数,可以将拼串分割成内存表返回,方便使用。

/*
** 将一个字符串转换成一个表变量。strvalue为字符形式
**/
create function [dbo].[Fn_convertstringtotablestring] (@String varchar(8000),--要转换的字符串。 
                                                       @Separator varchar(10) = ',' --分隔符。
)
returns @Table table(
  strvalue varchar(500),
  seq      int identity(1, 1))
as
  begin
      set @String = @String+@Separator
      while Charindex(@Separator, @String)>0
        begin
            insert into @Table
                        (strvalue)
            values     (Substring(@String, 1, Charindex(@Separator, @String)-1))
            select @String=Substring(@String, Charindex(@Separator, @String)+1, Len(@String)-Charindex(@Separator, @String))
        end
      return
  end

调用dbo.Fn_convertstringtotablestring函数

SELECT * FROM dbo.Fn_convertstringtotablestring('SN1232224,SN3123131,SN4142321,SN9892278',',')

结果:

原文地址:https://www.cnblogs.com/sgxw/p/13999510.html