SQL Server:WHERE子句中具有IN条件的CASE语句

J

我想在以@input作为输入值的存储过程中,在where子句中使用case语句,例如:

SELECT my_column
FROM MY_TABLE
WHERE MY_TABLE.my_column in (CASE WHEN @input = '1' THEN ('A','B','C') ELSE ('A') END)

令人难以置信的是,当我在“ THEN”之后仅放置一个值时,它会起作用:

SELECT my_column
FROM MY_TABLE
WHERE MY_TABLE.my_column in (CASE WHEN @input = '1' THEN ('C') ELSE ('A') END)

我可以将IN条件与CASE上面想要语句一起使用吗?还有另一种方法可以做我想要的吗?

感谢您的帮助,

CLJ

乔治·贝索斯(Giorgos Betsos)

您的第一个查询的问题是CASE仅返回标量值。它不能返回值列表。

相反,您可以简单地使用OR

SELECT  my_column
FROM    MY_TABLE
WHERE   (@input = '1' and MY_TABLE.my_column IN ('A','B','C'))
        OR
        (@input <> '1' and MY_TABLE.my_column = 'A')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章