一尘不染

如何评估WHERE子句中的输入

sql

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

SELECT * FROM PEOPLE
WHERE 
     IF @INPUT = 1
         ITEMID = 16 OR ITEMID = 13
     ELSE IF @INPUT = 2
         ITEMID = 11 OR ITEMID = 14
     ELSE
         ITEMID = 0

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

我像这样尝试过CASE

WHERE 
    CASE @INPUT
       WHEN 1 THEN ITEMID = 16 OR ITEMID = 13
       WHEN 2 THEN ITEMID = 11 OR ITEMID = 14
       ELSE ITEMID = 0
    END

但是所有这些方法都会引发错误,如果可以的话,我将提供一个很好的建议,一种更有效的方式来实现此目的。

感谢您的帮助。


阅读 181

收藏
2021-03-08

共1个答案

一尘不染

 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)
2021-03-08