我的查询条件需要帮助。
我希望它能像这样工作:
WHERE
[Column] = CASE
WHEN @Variable1 IN (1,2)
THEN NULL
ELSE @Variable2
END
但它不起作用,因为[Column] = NULL
无法在我们的工作服务器SQL Server 2012上运行。
有什么想法吗?
答案 0 :(得分:1)
试试这个:
WHERE ISNULL([Column],1) = CASE
WHEN @Variable1 IN (1,2) THEN 1
ELSE @Variable2
END
P.S。将值1
更改为对[Column]
无效的任何值。
答案 1 :(得分:0)
无法使用比较运算符测试NULL值,例如=,<或<>。
您必须使用IS NULL或IS NOT NULL运算符。 重写你的条件:
WHERE ([Column] IS NULL AND @Variable1 IN (1,2)
OR [Column] = @Variable2)
AND ...other conditions...
答案 2 :(得分:0)
WHERE CASE
WHEN @Variable1 IN (1,2) AND [Column] IS NULL THEN 1
WHEN [Column] = @Variable2 THEN 1
ELSE 0 END = 1