使用另一个表加入字符串中的ID列表

时间:2013-10-28 23:03:44

标签: sql sql-server-2008

我遇到了一个我很难弄明白的问题。希望你能帮助我。

我有来自不同表/字段的名为“TheOrderIDs”的字符串,此字符串(Varchar)包含订单ID,格式为“1,2,3,4,5,6,7”。

多个ID的常规查询是:

Select * from tblOrder where OrderID IN (1, 2, 3, 4, 5, 6, 7)

但是如果我将“TheOrderIDs”保存在变量中并将其放入查询IN()语句中,它将无效。

知道如何将OrderID字符串转换为查询IN()的格式吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

当我遇到这种类型的设计问题时,我会这样做:

Select * from tblOrder 
where ',' + REPLACE(@VarcharWithCommaSeparatedValues, ' ', '') + ',' LIKE '%,' + CONVERT(VARCHAR(10), OrderID) + ',%'

答案 1 :(得分:1)

一种方法是使用动态SQL - 示例:

use mydb;
go
declare  @sql  varchar (100)
declare  @vals varchar(100)
set @vals='(1,2,3,4,5,6,7)'
set @sql = 'Select * from tblOrder where OrderID IN' + @vals
exec (@sql)

我不喜欢这样(至少是因为性能),但它应该有效。