文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

14.4.3 逻辑运算符

表 14.5 逻辑运算符

名称 描述
AND, && 逻辑 AND
NOT, ! 否定值
OR, || 逻辑 OR
XOR 逻辑 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!

    逻辑 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&&

    逻辑 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||

    逻辑 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

    逻辑 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)