在WHERE子句中使用不带ELSE的CASE,类似于IF。

3

在WHERE子句中,是否可以像IF一样使用没有ELSE的CASE语句来设置条件或不设置条件呢?

例如:

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个回答

3

你需要在 WHERE 语句中加入这个条件:

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

如果它实际上是在存储过程中,使用 IF...ELSE 来囊括不同的查询可能更加高效,其中一个带有此参数,另一个没有。


你认为执行两次查询更有效率吗? - Felipe Pincheira
@FelipePincheira:什么意思是“查询两次”?如果它在存储过程中使用IF...ELSE。但是表有多大?如果您没有性能问题,您不需要更改它。 - Tim Schmelter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接