Sql 使用返回可能值列表的case语句筛选查询

Sql 使用返回可能值列表的case语句筛选查询,sql,sql-server,Sql,Sql Server,我想根据一个值更改过滤器,如果这是有效语法,代码将如下所示: SELECT Value FROM Table WHERE ID IN (CASE WHEN <expression> THEN (1,2,3) ELSE (1,2) END) 选择 价值 从…起 桌子 哪里 ID在(当(1,2,3)或(1,2)结束时) 所以我想选择一个值,过滤器会根据某个表达式进行更改。当表达式为true时,我希望选择ID为1、2或3的所有值。当表达式为false时,我希望选

我想根据一个值更改过滤器,如果这是有效语法,代码将如下所示:

SELECT
    Value
FROM
    Table
WHERE
    ID IN (CASE WHEN <expression> THEN (1,2,3) ELSE (1,2) END)
选择
价值
从…起
桌子
哪里
ID在(当(1,2,3)或(1,2)结束时)
所以我想选择一个值,过滤器会根据某个表达式进行更改。当表达式为true时,我希望选择ID为1、2或3的所有值。当表达式为false时,我希望选择ID仅为1或2的所有值


它不是一个简单的
=
,而是从一个值列表中选择,这就是它不起作用的原因。这是如何实现的?

不要使用
案例。简单的逻辑就足够了:

WHERE (<expression> and ID IN (1, 2, 3)) or
      (not <expression> and ID IN (1, 2))
其中(以及(1,2,3)中的ID)或
(不包括第(1,2)条中的ID)
在这种情况下,您可以将其简化为:

where id in (1, 2) or
      (id = 3 and <expression>)
其中id位于(1,2)或
(id=3和)

不要使用
案例
。简单的逻辑就足够了:

WHERE (<expression> and ID IN (1, 2, 3)) or
      (not <expression> and ID IN (1, 2))
其中(以及(1,2,3)中的ID)或
(不包括第(1,2)条中的ID)
在这种情况下,您可以将其简化为:

where id in (1, 2) or
      (id = 3 and <expression>)
其中id位于(1,2)或
(id=3和)

你能展示你的
是什么吗?你能展示你的
是什么吗?