SQL Server 拆分和表插入

发布于 2024-11-26 06:22:32 字数 353 浏览 2 评论 0原文

我想使用 SQL Server 2005 执行以下操作。

  1. 创建一个采用 varchar() 逗号“,”分隔参数的存储过程

  2. 拆分/分解 varchar() 参数并将值插入到临时表中

它将执行以下操作:

INSERT INTO #temp_table SPLIT('john,peter,sally',',');

SELECT * FROM #temp_table;

是否有函数或存储过程将执行拆分?

如果是这样,它是如何运作的?

谢谢

I want to do the following using SQL Server 2005.

  1. Create a stored procedure that takes a varchar() comma "," delimited param

  2. Split / Explode the varchar() param and insert the values in a temporary table

Something that will do the following:

INSERT INTO #temp_table SPLIT('john,peter,sally',',');

SELECT * FROM #temp_table;

Is there a function or stored procedure that will perform a split?

If so, how does it work?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢华的一滴泪 2024-12-03 06:22:32

SQL Server 没有开箱即用的字符串分割函数,但您可以创建一个类似 这个

CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))       
returns @temptable TABLE (items varchar(8000))       
as       
begin       
    declare @idx int       
    declare @slice varchar(8000)       

    select @idx = 1       
        if len(@String)<1 or @String is null  return       

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice = left(@String,@idx - 1)       
        else       
            set @slice = @String       

        if(len(@slice)>0)  
            insert into @temptable(Items) values(@slice)       

        set @String = right(@String,len(@String) - @idx)       
        if len(@String) = 0 break       
    end   
return       
end

SQL Server does not have a string split function out of the box, but you can create one like this

CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))       
returns @temptable TABLE (items varchar(8000))       
as       
begin       
    declare @idx int       
    declare @slice varchar(8000)       

    select @idx = 1       
        if len(@String)<1 or @String is null  return       

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice = left(@String,@idx - 1)       
        else       
            set @slice = @String       

        if(len(@slice)>0)  
            insert into @temptable(Items) values(@slice)       

        set @String = right(@String,len(@String) - @idx)       
        if len(@String) = 0 break       
    end   
return       
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文