如何评估WHERE子句中的输入

use*_*502 3 sql t-sql sql-server-2008

我在我的一个变量中得到一个输入,基本上我想做类似的事情

SELECT * FROM PEOPLE
WHERE 
     IF @INPUT = 1
         ITEMID = 16 OR ITEMID = 13
     ELSE IF @INPUT = 2
         ITEMID = 11 OR ITEMID = 14
     ELSE
         ITEMID = 0
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,请原谅,如果这是错的,但我想尽可能容易理解我的问题.

在此之前我尝试过使用CASE

WHERE 
    CASE @INPUT
       WHEN 1 THEN ITEMID = 16 OR ITEMID = 13
       WHEN 2 THEN ITEMID = 11 OR ITEMID = 14
       ELSE ITEMID = 0
    END
Run Code Online (Sandbox Code Playgroud)

但是所有这些方法都会产生错误,我希望有一个好的建议,如果可能的话,更有效的方法.

感谢您的帮助.

Lit*_*les 6

 WHERE (@INPUT = 1 AND ITEMID IN (13,16)) 
    OR (@INPUT = 2 AND ITEMID IN (11,14))
    OR (@INPUT NOT IN (1,2) AND ITEMID = 0)
Run Code Online (Sandbox Code Playgroud)