CASE WHERE更改运算符 - SQL

时间:2013-06-03 01:18:50

标签: sql sql-server tsql case where

我想知道你是否可以在WHERE子句中做一个更改运算符的case语句。

我要做的是根据布尔值过滤掉结果。

SELECT *
FROM table1
WHERE 
      CASE @Status
          WHEN 1 THEN Name LIKE 'SOMETHING%'
          WHEN 2 THEN Name NOT LIKE 'SOMETHING%'
      END

我想知道这是否可行?

1 个答案:

答案 0 :(得分:13)

您可以在没有SWITCH表达式的情况下执行此操作,如下所示:

SELECT *
FROM table1
WHERE
    (@Status = 1 AND Name LIKE 'SOMETHING%')
OR  (@Status = 2 AND Name NOT LIKE 'SOMETHING%')

由于@Status一次只能等于一件事,因此OR表达式中只有一个成分会决定WHERE条件的结果。