我想只取当@Quality为1时为1的值,以及当0时既为0又为1的值。
SELECT * FROM TABLE
WHERE Check = (CASE WHEN @Quality = 1 THEN 1 ELSE IN(0,1) END)
CASE
必须解析为一个单一的值。它不能包含任意的SQL片段,如 IN(0,1)
.
你可以这样做,而不是 "当@Quality为1时,只取1的值,而当0时,则取0和1的值。"
SELECT *
FROM TABLE
WHERE Check IN (1, @Quality)
也许你真正想要的是这样。
WHERE (Check = 1 AND @Quality = 1)
OR (Check IN (0,1) and @Quality != 1) --Assuming @Quality cannot have a NULL value