过滤器为空的情况-全选

时间:2019-02-14 13:09:54

标签: sql-server

我需要在程序中添加一个状态过滤器。当过滤器不为空时,例如'AL','AK'等,一切正常,但是如果过滤器为空,我应该返回所有行。

where ... and state = case when @stateFilter != '' then @stateFilter else ??? end

2 个答案:

答案 0 :(得分:4)

您可以重新定义您的逻辑,如下所示:

WHERE
    ... AND
    (state = @stateFilter OR @stateFilter = '');

如果state等于传入的变量,恰好为空字符串,则最后一个条件将返回true。

答案 1 :(得分:3)

快速修复可能是这样的:

并在@stateFilter!=''时声明类似的情况,然后@stateFilter否则'%'结束