3

我想知道您是否可以在WHERE更改运算符的子句中执行 case 语句。

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

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

我想知道这是否可能?

4

1 回答 1

15

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

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

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

于 2013-06-03T01:28:35.253 回答