Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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 数据库服务器的实现相同,although some servers may return any nonzero value for 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版本中删除。应用程序应根据需要调整,以使用标准SQLNOT操作符。

  • 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版本中删除。应用程序应根据需要调整,以使用标准SQLAND操作符。

  • 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 模式,|| 表示标准的字符串连接操作符(类似CONCAT())。

    || 运算符是非标准扩展,已弃用;在 MySQL 的未来版本中将删除该支持。应用程序需要的地方应该调整使用标准 SQLOR 运算符。例外:如果启用了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)