有条件的Where子句

时间:2019-08-05 22:59:45

标签: sql sql-server where-clause

情况::我有一个存储过程,可以在其中获取表的所有信息。 我有2个参数以设置Where子句,但其中之一可能是 0。

问题:如何根据我的参数值在Case When子句中执行IfWhere? 我只想在值不同于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 

1 个答案:

答案 0 :(得分:6)

你不知道。您只需使用andor

select *
from Orders ord
where ord.ID_SUPPLIER = @ID_SUPPLIER) and
      (ord.ID_ORDER = @ID_ORDER or @ID_ORDER = 0);

请注意,您尝试的逻辑是向后的。仅当值不是id_order时,过滤器才会应用于0