我遇到了一个我很难弄明白的问题。希望你能帮助我。
我有来自不同表/字段的名为“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()的格式吗?
谢谢,
答案 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)
我不喜欢这样(至少是因为性能),但它应该有效。