我想知道你是否可以在WHERE
子句中做一个更改运算符的case语句。
我要做的是根据布尔值过滤掉结果。
SELECT *
FROM table1
WHERE
CASE @Status
WHEN 1 THEN Name LIKE 'SOMETHING%'
WHEN 2 THEN Name NOT LIKE 'SOMETHING%'
END
我想知道这是否可行?
答案 0 :(得分:13)
您可以在没有SWITCH
表达式的情况下执行此操作,如下所示:
SELECT *
FROM table1
WHERE
(@Status = 1 AND Name LIKE 'SOMETHING%')
OR (@Status = 2 AND Name NOT LIKE 'SOMETHING%')
由于@Status
一次只能等于一件事,因此OR
表达式中只有一个成分会决定WHERE
条件的结果。