我想对一个名为DateID的表使用一个参数作为NOT IN操作的值;但我无法正常工作。以下面的代码为例:
DECLARE @NewDateIDs as VARCHAR(1000)
SET @NewDateIDs = '66,67,68,69,70'
SELECT * FROM MyTable WHERE UserID = 1 AND EventID = 19 AND
CONVERT(VARCHAR(1000), DateID) NOT IN(@NewDateIDs)
当我运行上面的select语句时,将返回UserID = 1和EventID = 19的所有记录。应该返回一条记录,其中UserId = 1,EventID = 19,DateID = 65。
但是,如果我运行以下select语句,则会得到预期的结果。
SELECT * FROM MyTable WHERE UserID = 1 AND EventID = 19 AND
CONVERT(VARCHAR(1000), DateID) NOT IN(66,67,68,69,70)
我知道我在这里缺少一些非常基本的东西。有人可以告诉我如何正确执行此操作,以及为什么我尝试的操作不起作用。
答案 0 :(得分:0)
您可以使用动态sql查询来实现:
DECLARE @strQuery as VARCHAR(4000)
SET @strQuery = 'SELECT * FROM MyTable WHERE UserID = 1 AND EventID = 19 AND
DateID NOT IN(' + @NewDateIDs + ')'
EXEC(@strQuery)