Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改运算符-TSQL的情况_Sql_Sql Server_Tsql_Case_Where - Fatal编程技术网

更改运算符-TSQL的情况

更改运算符-TSQL的情况,sql,sql-server,tsql,case,where,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 我想知道这是否可行?您可以不使用开关来实现,如下所示: SELECT * FROM table1

我想知道您是否可以在
WHERE
子句中使用case语句来更改运算符

我试图做的是根据布尔值过滤出结果

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

我想知道这是否可行?

您可以不使用
开关来实现,如下所示:

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

既然
@Status
一次只能等于一件事,那么
表达式中只有一个组件将决定
WHERE
条件的结果。

太神奇了,这么简单,我为什么没想到呢!一点逻辑,我以前用过很多次,但当时的逻辑很清楚。可能是重复的