需要通过CASE将null赋值为条件

时间:2017-07-28 13:37:30

标签: sql tsql sql-server-2012

我的查询条件需要帮助。

我希望它能像这样工作:

WHERE 
    [Column] = CASE
                  WHEN @Variable1 IN (1,2) 
                     THEN NULL
                     ELSE @Variable2
               END

但它不起作用,因为[Column] = NULL无法在我们的工作服务器SQL Server 2012上运行。

有什么想法吗?

3 个答案:

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