在 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
逻辑非。如果操作数为
0,则计算结果为1;如果操作数为非零,则计算结果为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 中会被移除。应用程序(如有必要)应调整为使用标准 SQLNOT运算符。逻辑与。如果所有操作数均为非零且不为
NULL,则计算结果为1;如果一个或多个操作数为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 中会移除对它的支持。应用程序(如有必要)应调整为使用标准 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_CONCATSQL 模式,则||表示 SQL 标准字符串连接运算符(如CONCAT())。||运算符是非标准扩展,已被弃用;预计在未来版本的 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; -> 1a XOR b在数学上等于(a AND (NOT b)) OR ((NOT a) and b)。