我需要在程序中添加一个状态过滤器。当过滤器不为空时,例如'AL','AK'等,一切正常,但是如果过滤器为空,我应该返回所有行。
where ... and state = case when @stateFilter != '' then @stateFilter else ??? end
答案 0 :(得分:4)
您可以重新定义您的逻辑,如下所示:
WHERE
... AND
(state = @stateFilter OR @stateFilter = '');
如果state
等于传入的变量,或恰好为空字符串,则最后一个条件将返回true。
答案 1 :(得分:3)
快速修复可能是这样的:
并在@stateFilter!=''时声明类似的情况,然后@stateFilter否则'%'结束