---------------------------方法一
--函数
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