【问题标题】:Where in case in SQL ServerSQL Server 中的情况
【发布时间】:2020-07-23 10:40:43
【问题描述】:
如果@IsPrice=0,ProductPrice=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)