2013-04-12 22 views
3

你好我有以下從SQL Server存儲過程施加:T-SQL查詢

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爲空或不等於MF然後搜索兩個性別,這意味着WHERE不是必需的,有沒有辦法做到這一點,而不寫在CASE內的2個單獨的查詢?

回答

2

嘗試使用COALESCE

WHERE GEND_ID = COALESCE(@GenderToSearchBy, GEND_ID) 

ISNULL

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

如果@Gender可以不爲空,但加時賽的東西她比M或F那麼這將無濟於事。 – cdonner

+0

@cdonner你確定嗎? –

+0

如果你分析'SET'語句,他的問題的這個部分是關鍵「是NULL或不等於M或F然後搜索兩個性別」 – cdonner