【问题标题】:Where clause with a conditional condition带有条件条件的 Where 子句
【发布时间】:2019-08-06 20:01:46
【问题描述】:

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

问题:如何根据我的参数值在我的Where 子句中使用Case WhenIf? 仅当值不同于 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 

【问题讨论】:

    标签: sql sql-server where-clause


    【解决方案1】:

    你没有。你只需使用andor

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

    请注意,您尝试的逻辑是向后的。这仅在值不是0 时对id_order 应用过滤器。

    【讨论】:

    • 是的,我写错了,我放了“=”而不是“!=”。无论如何,这解决了我的问题,谢谢!
    猜你喜欢
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多