循环由逗号分隔的变量,并将每个项输入到表SQL的每一行

时间:2014-02-07 06:04:13

标签: sql xml sql-server-2008 loops

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

然后我有一个表@tmpTable,有两列(respID和Responses)

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

我希望每行的id是上面我x变量的值。 (例如,第1行的respID = 1,第2行的respID = 2 ..依此类推..)

enter image description here 如何在SQL中执行此操作?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你可以这样做。

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

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