在SQL CASE WHEN表达式中返回IS NOT NULL

时间:2019-11-13 18:45:38

标签: sql-server case where-clause

如何从SQL Server CASE语句返回IS NOT NULL?

我尝试过这样的事情:

WHERE 
    a.BillToCustomerID IS NOT NULL
    AND CASE @taxSchedRequiered
           WHEN 1 THEN a.TaxScheduleID IS NOT NULL
        END

但是它对我不起作用。

更新

我需要按a.TaxScheduleID不为NULL进行过滤,仅在特定情况下,变量@taxSchedRequiered的值(可能值为:null,0、1)为1。

1 个答案:

答案 0 :(得分:1)

只需更改逻辑并使用OR

WHERE 
    a.BillToCustomerID IS NOT NULL
    AND (@taxSchedRequiered <> 1 OR a.TaxScheduleID IS NOT NULL)

如果@taxSchedRequiered = 0,它将包括所有记录;否则,它将仅包括具有a.TaxScheduleID <> NULL的记录

执行此操作时,还请确保@taxSchedRequired的值不是NULL

编辑以检查空参数

WHERE 
    a.BillToCustomerID IS NOT NULL
    AND (ISNULL(@taxSchedRequiered,0) = 0 OR a.TaxScheduleID IS NOT NULL)