T-SQL查询&x27;其中';基于If语句

T-SQL查询&x27;其中';基于If语句,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,您好,我从SQL server存储过程中获得以下信息: 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_NAM

您好,我从SQL server存储过程中获得以下信息:

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 GEND_ID=@GenderToSearchBy

现在,我想让它工作,如果
@Gender
为NULL或不等于
M
F
,那么搜索两种性别,这意味着
在不需要
的地方,有没有办法不在
案例中写两个单独的查询就可以做到这一点

WHERE GEND_ID = COALESCE(@GenderToSearchBy, GEND_ID)
ISNULL

WHERE GEND_ID = ISNULL(@GenderToSearchBy, GEND_ID)

如果@Gender不能为null,但不能为M或F以外的值,那么这将没有帮助。@cdonner你确定吗?他的问题的这一部分是关键“为null或不等于M或F,然后搜索两种性别”@cdonner如果你分析
SET
语句,那就很好了。任何
NULL或非M或F
的值都将等于
NULL
,请参见
CASE WHEN…Else NULL
。如果您尝试为
@gender
输入
X
,您认为
SET@GenderToSearchBy
的值是否为
X
?不,它是空的。