逻辑运算符
逻辑运算符
| 名称 | 描述 | 
|---|---|
| AND,&& | 逻辑与 | 
| NOT,! | 取反值 | 
| OR,|| | 逻辑或 | 
| XOR | 逻辑异或 | 
在SQL中,所有逻辑运算符来评估TRUE,FALSE或NULL(UNKNOWN)。在MySQL中,这些实现为1(TRUE),0(FALSE)和NULL。尽管其中有些服务器可能返回的任何非零值,但大多数情况对于不同的SQL数据库服务器来说是通用的TRUE。
MySQL将所有非零,非NULL值都评估为TRUE。例如,以下语句均评估为TRUE:
mysql>SELECT 10 IS TRUE; -> 1 mysql>SELECT -10 IS TRUE; -> 1 mysql>SELECT 'string' IS NOT NULL; -> 1
- NOT,- !- 逻辑非。计算 - 1操作数是否为- 0,- 0如果操作数为非零,则- NOT NULL返回- NULL。- mysql> - SELECT NOT 10; -> 0 mysql>- SELECT NOT 0; -> 1 mysql>- SELECT NOT NULL; -> NULL mysql>- SELECT ! (1+1); -> 0 mysql>- SELECT ! 1+1; -> 1- 最后一个示例的产生 - 1是因为表达式的计算方式与相同- (!1)+1。- !,运营商是一个非标准MySQL扩展。从MySQL 8.0.17开始,不推荐使用此运算符,并且在将来的MySQL版本中将删除对此运算符的支持。应将应用程序调整为使用标准SQL- NOT运算符。
- AND,- &&- 逻辑与。评估 - 1是否所有操作数都为非零而不是非- NULL,- 0如果一个或多个操作数为- 0,- NULL则返回,否则返回。- mysql> - SELECT 1 AND 1; -> 1 mysql>- SELECT 1 AND 0; -> 0 mysql>- SELECT 1 AND NULL; -> NULL mysql>- SELECT 0 AND NULL; -> 0 mysql>- SELECT NULL AND 0; -> 0- &&,运营商是一个非标准MySQL扩展。从MySQL 8.0.17开始,不推荐使用此运算符,并且在将来的MySQL版本中将删除对此运算符的支持。应将应用程序调整为使用标准SQL- AND运算符。
- OR,- ||- 逻辑或。当两个操作数均为非-时 - NULL,结果为- 1是否有任何操作数非零- 0。对于一个- NULL操作数,结果是- 1另一个操作数是否非零- NULL。如果两个操作数都为- NULL,则结果为- NULL。- mysql> - SELECT 1 OR 1; -> 1 mysql>- SELECT 1 OR 0; -> 1 mysql>- SELECT 0 OR 0; -> 0 mysql>- SELECT 0 OR NULL; -> NULL mysql>- SELECT 1 OR NULL; -> 1- 注意 - 如果 - PIPES_AS_CONCAT启用了SQL模式,则- ||表示SQL标准的字符串连接运算符(如- CONCAT())。- ||,运营商是一个非标准MySQL扩展。从MySQL 8.0.17开始,不推荐使用此运算符,并且在将来的MySQL版本中将删除对此运算符的支持。应将应用程序调整为使用标准SQL- OR运算符。例外:如果- PIPES_AS_CONCAT启用,则弃用不适用,因为在这种情况下,- ||表示字符串连接。
- XOR- 逻辑异或。 - NULL如果任一操作数为,则返回- NULL。对于非- NULL操作数,计算- 1出奇数个操作数是否为非零,否则- 0返回。- mysql> - SELECT 1- XOR 1; -> 0 mysql>- SELECT 1- XOR 0; -> 1 mysql>- SELECT 1- XOR NULL; -> NULL mysql>- SELECT 1- XOR 1- XOR 1; -> 1- a XOR b在数学上等于- (a AND(NOT b))OR((NOT a)and b)。
