【问题标题】:Where in case in SQL ServerSQL Server 中的情况
【发布时间】:2020-07-23 10:40:43
【问题描述】:

如果@IsPrice=0ProductPrice=0 将返回。如果没有,ProductPrice > 0 将返回。这就是我想要的,但我无法准确地编写代码。

declare @Isprice bit=0

select * 
from [Product] p 
where case when @Isprice = 0 then p.ProductPrice = 0 else p.ProductPrice > 0 end

【问题讨论】:

    标签: sql sql-server select case where-clause


    【解决方案1】:

    如果您想保留 CASE 逻辑,您也可以考虑:

    SELECT *
    FROM   [Product] p 
    WHERE  
    1 = CASE
    WHEN (@Isprice = 0  AND p.ProductPrice = 0) THEN 1
    WHEN (@Isprice <> 0 AND p.ProductPrice > 0) THEN 1
    ELSE 0
    END;
    

    【讨论】:

      【解决方案2】:

      case 表达式返回一个值,而不是 SQL 片段。不过,您可以通过使用一些逻辑运算符来获得这种行为:

      SELECT *
      FROM   [Product] p 
      WHERE  (@Isprice = 0  AND p.ProductPrice = 0) OR
             (@Isprice <> 0 AND p.ProductPrice > 0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-19
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 2016-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多