在数值字段上使用NOT IN

时间:2019-02-20 22:49:52

标签: sql tsql

我想对一个名为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)

我知道我在这里缺少一些非常基本的东西。有人可以告诉我如何正确执行此操作,以及为什么我尝试的操作不起作用。

1 个答案:

答案 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)