sql把逗号分隔的字符串拆成临时表
在与数据库交互的过程中,我们经常需要把⼀串ID组成的字符串当作参数传给存储过程获取数据。很多时候我们希望把这个字符串转成集合以⽅便⽤于in操作。有两种⽅式可以⽅便地把这个以某种符号分隔的ID字符串转成临时表。
⽅式⼀:通过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', ',')
结果:
⽅式⼆:通过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,'<items><item id="'+REPLACE(@str, @split, '"/><item id="') +'"/></items>')
INSERT INTO@t SELECT x.item.value('@id[1]', 'INT') des('//items/item') AS x(item)
RETURN
END
执⾏:select * from  dbo.func_splitid('1,2,3,4,5,6', ',')
结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。