文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  逻辑运算符

14.4.3 逻辑运算符

表 14.5 逻辑运算符

名称 描述
AND, && 逻辑与
NOT, ! 取反值
OR, || 逻辑或
XOR 逻辑异或

在 SQL 中,所有逻辑运算符的计算结果均为 TRUEFALSENULL (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, !

    逻辑非。如果操作数为 0,则计算结果为 1;如果操作数为非零,则计算结果为 0NOT 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 中会被移除。应用程序(如有必要)应调整为使用标准 SQL NOT 运算符。

  • AND, &&

    逻辑与。如果所有操作数均为非零且不为 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 中会移除对它的支持。应用程序(如有必要)应调整为使用标准 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 中会移除对它的支持。应用程序(如有必要)应调整为使用标准 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)