Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Logical Operators

14.4.3 逻辑运算符

表 14.5 逻辑运算符

Name Description
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。评估为 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 中将被删除。应用程序,必要时,应该调整以使用标准 SQL NOT 运算符。

  • AND, &&

    逻辑 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 中将被删除。应用程序,必要时,应该调整以使用标准 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
    Note

    如果启用了 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)