【问题标题】:loop a variable delimited by comma and enter each item to each row of the table SQL循环一个以逗号分隔的变量,并将每个项目输入到表 SQL 的每一行
【发布时间】:2014-02-07 06:04:13
【问题描述】:

假设我有变量 x,它等于:x='3,4,5,6,7'

然后我有一个表@tmpTable 有两列(respID 和响应)

在我的@tmpTable 上,每一行的 respID 都是空的。

我希望每一行的 id 都有上面我的 x 变量的值。 (例如,第 1 行的 respID=1,第 2 行的 respID=2.. 等等..)

如何在 SQL 中做到这一点?

【问题讨论】:

  • 你在使用 SQL Server (tsql) 吗?

标签: sql xml sql-server-2008 loops


【解决方案1】:

您可以使用 SSMS 实现以下目标:

declare @S varchar(20)
set @S = '1,2,3,4,5'
declare @tempTable as table (col1 varchar(max), col2 varchar(max))

While len(@s) > 0
begin
    insert into @tempTable(col1) select left(@S, charindex(',', @S+',')-1)
    set @S=stuff(@S, 1, charindex(',', @S+','), '')
end

select * from @tempTable

【讨论】:

    【解决方案2】:

    你可以这样做。

    SELECT 
      Responses.value('(/x/@ID)[1]', 'int') AS [ID],
      Responses
    FROM YourTable
    

    抱歉,您帖子中的图片现已消失,所以我不记得表名或确切的 xml。在谷歌上搜索“tsql xml xpath”。

    【讨论】:

    • 我只想从变量 x 中获取 ID。其值为“3,4,5,6,7”。我不想从 xml 中获取值,因为它更复杂
    猜你喜欢
    • 2021-02-09
    • 2019-09-12
    • 2017-08-19
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多