0

我有一个 if else 语句,它在任一条件下返回多个值或多行:

下面的代码是我只返回 1 个值的代码。

 if @ifExist = 'TRUE' 
   begin   
     (SELECT [ID],[PersonFirstName],[PersonLastName],[PersonEmail] 
     FROM   MYTABLE
     WHERE  SOMEForigenID = SomeID)
   end

 ELSE 
   begin (SELECT [ID],[PersonFirstName],[PersonLastName],[PersonEmail] 
     FROM   MYTABLE
     WHERE  SOMEForigenID = SomeOtherID)
    end

我不确定如何实现这一点,所以我可以让它返回第一个选择语句或第二个。

任何帮助表示赞赏。

谢谢

4

1 回答 1

3

如果CASE您最终有两个以上的值,则声明将有所帮助@ifExist

SELECT [ID],[PersonFirstName],[PersonLastName],[PersonEmail] 
FROM   MYTABLE
WHERE  SOMEForigenID = CASE @ifExist WHEN 'TRUE' THEN 1 ELSE 2 END

具有多个值的示例:

WHERE  SOMEForigenID = CASE @ifExist 
                            WHEN 'A' THEN 1 
                            WHEN 'B' THEN 2 
                            WHEN 'Z' THEN 26 
                            ELSE -1
                       END

如果只有两个可能的值,您也可以使用 IIF

WHERE  SOMEForigenID = IIF(@ifExist, 1, 2) -- @ifExist is a BIT

或者

WHERE  SOMEForigenID = IIF(@ifExist = 'TRUE', 1, 2) -- @ifExist as char
于 2013-06-26T14:38:58.150 回答