基于If语句的T-SQL查询‘Where’

3

你好,我有一个来自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 GEND_ID=@GenderToSearchBy

现在,我希望这个能够工作,如果 @Gender 是 NULL 或不等于 MF,那么搜索两种性别,这意味着不需要 WHERE,有没有办法在不在 CASE 中编写 2 个单独的查询的情况下实现?
1个回答

2

试着使用 COALESCE 函数

WHERE GEND_ID = COALESCE(@GenderToSearchBy, GEND_ID)

或者ISNULL
WHERE GEND_ID = ISNULL(@GenderToSearchBy, GEND_ID)

如果@Gender不为空,但不是M或F,则这将无济于事。 - cdonner
@cdonner,你确定吗? - John Woo
他问题中的关键在于:“为空或不等于M或F,则搜索两种性别”。 - cdonner
1
@cdonner,如果你分析SET语句,任何NULL或非M或F的内容都将等于NULL,请看CASE WHEN....Else NULL。如果你尝试为@gender输入X,你认为SET @GenderToSearchBy的值是X吗?不,它是NULL - John Woo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接