在像IF这样的WHERE子句中使用CASE而不使用ELSE

时间:2016-02-25 14:08:58

标签: sql sql-server-2008-r2

是否可以在WHERE子句中使用不带ELSE的CASE,如IF?是否有条件。

实施例

WHERE monto = 100
    AND CASE WHEN @canal is not null
        THEN canal = @canal
    END

我问这个是因为我想这样做

WHERE monto = 100
    IF (@canal is not null){
        AND canal = @canal
    }

1 个答案:

答案 0 :(得分:3)

您需要在WHERE

中包含此条件

WHERE monto = 100 AND ( @canal IS NULL OR canal = @canal )

如果它实际上存在于存储过程中,那么在不同查询周围使用IF...ELSE可能会更有效,一个使用此参数,另一个不使用。{/ p>