SQL Server逗号分隔字符串通过户自定义函数返回临时表

---------------------------方法一
--函数
create function f_split(@strSql varchar(8000))
returns @t table(a varchar(100))
as 
begin
    declare @i int
    set @strSql=rtrim(ltrim(@strSql))
    set @i=charindex(',',@strSql)
    while @i>=1
    begin
        insert @t values(left(@strSql,@i-1))
        set @strSql=substring(@strSql,@i+1,len(@strSql)-@i)
        set @i=charindex(',',@strSql)
    end
    if @strSql<>','
       insert @t values(@strSql)
    return 
END
go
--用例
select * from dbo.f_split('1,2,3')
--
DROP function f_split
---------------------------方法二
--函数
create function f_split
(@strSql varchar(max),@split varchar(10))
RETURNS @t Table (c1 int)
AS
BEGIN   
DECLARE @x XML  
  SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@strSql, @split, '"/><item id="') + '"/></items>')  
  INSERT INTO @t SELECT x.item.value('@id[1]', 'INT') FROM @x.nodes('//items/item') AS x(item)   
RETURN 
END
GO
--用例
select * from dbo.f_split('1,2,3',',')
--
DROP function f_split
原文地址:https://www.cnblogs.com/andy_tigger/p/2175512.html