情况::我有一个存储过程,可以在其中获取表的所有信息。 我有2个参数以设置Where子句,但其中之一可能是 0。
问题:如何根据我的参数值在Case When
子句中执行If
或Where
?
我只想在值不同于0的情况下应用where子句
如果为0,我不想这么做。
代码:
@ID_ORDER,
@ID_SUPPLIER
Select *
From Orders ord
where @ID_SUPPLIER = ord.ID_SUPPLIER
AND CASE WHEN @ID_ORDER = 0 THEN ord.ID_ORDER = @ID_ORDER END
答案 0 :(得分:6)
你不知道。您只需使用and
和or
:
select *
from Orders ord
where ord.ID_SUPPLIER = @ID_SUPPLIER) and
(ord.ID_ORDER = @ID_ORDER or @ID_ORDER = 0);
请注意,您尝试的逻辑是向后的。仅当值不是id_order
时,过滤器才会应用于0
。