SQL语句中将字符串转成临时表的方法

日期: 2010-08-17 作者:eleven11 来源:TechTarget中国 英文

  在与数据库交互的过程中,我们经常需要把一串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’) FROM @x.nodes(‘//items/item’) AS x(item)
    RETURN 
END

  执行:select * from dbo.func_splitid(‘1,2,3,4,5,6’, ‘,’)

  结果:

  

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

eleven11
eleven11

相关推荐