在 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
逻辑非。计算
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 版本中将其删除。应调整应用程序以使用标准 SQLNOT
运算符。逻辑与。评估
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 中删除对它的支持。应调整应用程序以使用标准 SQLAND
运算符。逻辑或。当两个操作数都为非
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 中删除对它的支持。应调整应用程序以使用标准 SQLOR
运算符。PIPES_AS_CONCAT
例外:如果启用, 则弃用不适用, 因为在这种情况下,||
表示字符串连接。逻辑异或。
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)
。