gpt4 book ai didi

sql-server-2008 - 循环遍历拆分字符串变量以在 SQL Server 2008 中的存储过程中插入行

转载 作者:行者123 更新时间:2023-12-01 09:20:07 25 4
gpt4 key购买 nike

我正在使用 SQL Server 2008 创建一个存储过程:

  • 采用这样的字符串变量:'1,2,3'
  • 使用表值函数拆分字符串以分别获取每个值
  • 然后将每个值插入表中的新行

  • 我想要做的是这样的:
    WHILE (select vlaue FROM dbo.SplitString('1,2,3',',')) has rows
    insert into TableName (col1,col2) values (col1Data, value)

    我很难为此找到正确的语法。

    最佳答案

    我使用这个表值函数:

    CREATE FUNCTION [dbo].[Split] (@sep char(1), @s varchar(512))
    RETURNS table
    AS
    RETURN (
    WITH Pieces(pn, start, stop) AS (
    SELECT 1, 1, CHARINDEX(@sep, @s)
    UNION ALL
    SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
    FROM Pieces
    WHERE stop > 0
    )
    SELECT pn,
    SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
    FROM Pieces
    )
    GO

    它接受一个带有分隔符的字符串并返回一个包含两列的表,第一个返回基于 1 的位置,第二个返回字符串中该位置的元素:

    用法:
    SELECT * FROM dbo.Split(',', '1,2,3')

    返回:
    pn  s
    1 1
    2 2
    3 3

    将结果插入表格:
    INSERT INTO TableName (Col1)
    SELECT S FROM dbo.Split(',', '1,2,3)

    对于您的特定示例,请将语法更改为:
       insert into TableName (col1,col2) 
    select col1Data, value FROM dbo.SplitString('1,2,3',',')

    关于sql-server-2008 - 循环遍历拆分字符串变量以在 SQL Server 2008 中的存储过程中插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34836439/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com