sql语句中将字符串转成临时表的方法
方式一:通过xquery(需要sql server 2005以上版本)。
create function func_splitid
(@str varchar(max),@split varchar(10))
returns @t table (c1 int)
as
begin
declare @x xml
set @x = convert(xml,'')
insert into @t select x.item.value('@id[1]', 'int') from @x.nodes('//items/item') as x(item)
return
end
执行:select * from dbo.func_splitid('1,2,3,4,5,6', ',')
结果:
方式二:通过charindex和substring。
create function func_splitstring
(@str nvarchar(max),@split varchar(10))
returns @t table (c1 varchar(100))
as
begin
declare @i int
declare @s int
set @i=1
set @s=1
while(@i>0)
begin
set @i=charindex(@split ,@str ,@s)
if(@i>0)
begin
insert @t(c1) values(substring(@str ,@s ,@i-@s))
end
else begin
insert @t(c1) values(substring(@str ,@s ,len(@str)-@s+1))
end
set @s = @i + 1
end
return
end
执行:select * from dbo.func_splitstring('1,2,3,4,5,6', ',')
结果: