Где в случае в SQL Сервер - PullRequest
       18

Где в случае в SQL Сервер

1 голос
/ 10 апреля 2020

Если @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

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020
Выражение

A case возвращает значение, а не фрагмент SQL. Вы можете получить такое поведение, используя некоторые логические операторы:

SELECT *
FROM   [Product] p 
WHERE  (@Isprice = 0  AND p.ProductPrice = 0) OR
       (@Isprice <> 0 AND p.ProductPrice > 0)
1 голос
/ 10 апреля 2020

Если вы хотите сохранить логику CASE c, вы также можете рассмотреть:

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;
...