2016-10-28 3 views
0
Declare @param char(1) 
SET @param = 'A' 

@param может быть 'А', 'B' или 'C'SQL-парам в ИНЕКЕ, чтобы принести нулевое значение

SELECT x, y FROM myTbl 
WHERE y = @param 

, если @param = 'А' или 'В', то у = @param отлично работает , если @param = 'C', тогда я хочу, чтобы WHERE получить строки, где y IS NULL

Я мог бы достичь этого, используя динамический sql, но не могу понять, как это сделать без динамического sql , Есть предположения?

+0

Какой РСУБД это? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –

ответ

1

Использование основной булевой логики:

SELECT x, y 
FROM myTbl 
WHERE y = @param or (@param = 'C' and y is null); 

Если вы действительно хотите быть более явным:

SELECT x, y 
FROM myTbl 
WHERE (@param <> 'C' AND y = @param) OR 
     (@param = 'C' AND y IS NULL); 
+0

Спасибо! это сработало – SilverFish