2013-04-12 4 views
3

Привет я следующий напрягать из хранимой процедуры SQL Server:T-SQL-запрос "Где на основании заявления If

SET @GenderToSearchBy = 
     CASE 
      When @Gender IS NOT NULL And @Gender='M' THEN @MaleID 
      When @Gender IS NOT NULL And @Gender='F' Then @FemaleID 
      Else NULL 
     End 

SELECT FRST_NAME,LAST_NAME,ID_NUMB,GRDE_DSCN, 
GEND_ID FROM #TEMP_STUD WHERE [email protected] 

Теперь я хочу, чтобы это работало, что если @Gender является NULL или не равно M или F, тогда поиск обоих полов, что означает, что WHERE не требуется, есть ли способ сделать это без написания 2 отдельных запросов внутри CASE?

ответ

2

попробуйте использовать COALESCE

WHERE GEND_ID = COALESCE(@GenderToSearchBy, GEND_ID) 

или ISNULL

WHERE GEND_ID = ISNULL(@GenderToSearchBy, GEND_ID) 
+0

Если @Gender может быть не равно нулю, но что-то О.Т. ей, чем М или F, тогда это не поможет. – cdonner

+0

@cdonner вы уверены в этом? –

+0

Эта часть его вопроса - это ключ «NULL или не равен M или F, а затем поиск обоих полов» – cdonner