我想在以@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
您的第一个查询的问题是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] 删除。
我来说两句