CASE WHERE更改运算符 - TSQL

Wil*_*ght 3 sql t-sql sql-server case where

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

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

SELECT *
FROM table1
WHERE 
      CASE @Status
          WHEN 1 THEN Name LIKE 'SOMETHING%'
          WHEN 2 THEN Name NOT LIKE 'SOMETHING%'
      END
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可能?

das*_*ght 13

你可以在没有SWITCH表达式的情况下完成它,如下所示:

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

由于@Status一次只能等于一件事,因此OR表达式中只有一个部分可以确定WHERE条件的结果.