在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',',')
结果: