2016-09-27 2 views
2

Как упростить это в одно ИНЕКЕ с случай, когда оператор:Query фильтр с ДЕЛУ выберите NULL поле [SQL Server]

@param varchar(1) NULL 

if @param = 'Y' 
    ... WHERE field = @param 
else if @param = 'N' 
    ... WHERE field = @param OR field IS NULL 

Заранее спасибо

+0

Не используйте 'case' выражения в ИНЕКЕ, придерживайтесь' AND'/'OR'. – jarlh

+0

oh, ok sir @jarlh – andrefadila

ответ

0

Как это: без футляра Expression

WHERE (@param='Y' AND field = @param) OR (@param='N' AND (field = @param OR field IS NULL)) 
0

Я думаю, что это будет сделать это:

WHERE field = @param OR (@param = 'N' AND field IS NULL) 
0

Вы можете упростить с помощью coalesce, предполагая, что поля NULL должны быть проверены для параметра «N».

where coalesce(field, 'N') = @param 

Конечно, это может привести к неожиданным результатам, если @param может быть что-то другое, чем «Y» или «N»