0

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

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

对多个 ID 的常规查询是:

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

但是,如果我将“TheOrderIDs”保存在一个变量中并将其放在查询 IN() 语句中,它将不起作用。

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

谢谢,

4

2 回答 2

1

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

Select * from tblOrder 
where ',' + REPLACE(@VarcharWithCommaSeparatedValues, ' ', '') + ',' LIKE '%,' + CONVERT(VARCHAR(10), OrderID) + ',%'
于 2013-10-28T23:28:31.113 回答
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)

我不喜欢这个(至少是因为性能),但它应该可以工作。

于 2013-10-28T23:31:39.057 回答