我想在 "where "中的 "case when "中写出多个值,但没有做到

问题描述 投票:0回答:1

我想只取当@Quality为1时为1的值,以及当0时既为0又为1的值。

SELECT * FROM TABLE 
WHERE Check = (CASE WHEN @Quality = 1 THEN 1 ELSE IN(0,1) END)
sql-server case-when
1个回答
2
投票

CASE 必须解析为一个单一的值。它不能包含任意的SQL片段,如 IN(0,1).

你可以这样做,而不是 "当@Quality为1时,只取1的值,而当0时,则取0和1的值。"

SELECT * 
FROM TABLE 
WHERE Check IN (1, @Quality)

1
投票

也许你真正想要的是这样。

WHERE (Check = 1 AND @Quality = 1)
   OR (Check IN (0,1) and @Quality != 1) --Assuming @Quality cannot have a NULL value
© www.soinside.com 2019 - 2024. All rights reserved.