逻辑运算符/布尔运算符

逻辑运算符返回针对一个或两个输入表达式的特定布尔运算的结果。

它们只能用作谓词(例如在 WHERE 子句中)。输入表达式必须是谓词。

另请参阅:

BOOLANDBOOLNOTBOOLORBOOLXOR

本主题内容:

逻辑运算符/布尔运算符的列表

运算符

语法示例

描述

AND

a AND b

同时匹配两个表达式(ab)。

NOT

NOT a

与表达式不匹配。

OR

a OR b

匹配任一表达式。

这些运算符的优先顺序如下所示(从高到低):

  • NOT

  • AND

  • OR

示例

第一个示例使用以下表和数据:

CREATE TABLE logical (t BOOLEAN, f BOOLEAN, n BOOLEAN);
INSERT INTO logical (t, f, n) VALUES (True, False, NULL);
Copy

逻辑运算符通常用于 WHERE 子句:

SELECT t, f, n FROM logical WHERE t AND NOT f;
Copy

输出:

+------+-------+------+
| T    | F     | N    |
|------+-------+------|
| True | False | NULL |
+------+-------+------+
Copy

以下示例显示了逻辑运算符的优先级:

第一个示例表明 AND 的优先级高于 OR 的优先级。第一个表达式的计算方式与第二个表达式相同,而不是与第三个表达式相同。

SELECT TRUE OR TRUE AND FALSE, TRUE OR (TRUE AND FALSE), (TRUE OR TRUE) AND FALSE;
Copy

输出:

+------------------------+--------------------------+--------------------------+
| TRUE OR TRUE AND FALSE | TRUE OR (TRUE AND FALSE) | (TRUE OR TRUE) AND FALSE |
|------------------------+--------------------------+--------------------------|
| True                   | True                     | False                    |
+------------------------+--------------------------+--------------------------+
Copy

下一个示例表明 NOT 的优先级高于 AND 的优先级。第一个表达式的计算方式与第二个表达式相同,而不是与第三个表达式相同。

SELECT NOT FALSE AND FALSE, (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE);
Copy

输出:

+---------------------+-----------------------+-----------------------+
| NOT FALSE AND FALSE | (NOT FALSE) AND FALSE | NOT (FALSE AND FALSE) |
|---------------------+-----------------------+-----------------------|
| False               | False                 | True                  |
+---------------------+-----------------------+-----------------------+
Copy

下一个示例表明 NOT 的优先级高于 OR 的优先级。第一个表达式的计算方式与第二个表达式相同,而不是与第三个表达式相同。

SELECT NOT FALSE OR TRUE, (NOT FALSE) OR TRUE, NOT (FALSE OR TRUE);
Copy

输出:

+-------------------+---------------------+---------------------+
| NOT FALSE OR TRUE | (NOT FALSE) OR TRUE | NOT (FALSE OR TRUE) |
|-------------------+---------------------+---------------------|
| True              | True                | False               |
+-------------------+---------------------+---------------------+
Copy

接下来的几个示例显示了逻辑运算符的“真值表”。

创建新表和数据:

CREATE TABLE logical2 (x BOOLEAN);
INSERT INTO logical2 (x) VALUES 
    (False),
    (True),
    (NULL);
Copy

此示例显示了 OR 运算符的真值表:

SELECT x AS "OR", x OR False AS "FALSE", x OR True AS "TRUE", x OR NULL AS "NULL"
  FROM logical2;
Copy

输出:

+-------+-------+------+------+
| OR    | FALSE | TRUE | NULL |
|-------+-------+------+------|
| False | False | True | NULL |
| True  | True  | True | True |
| NULL  | NULL  | True | NULL |
+-------+-------+------+------+
Copy

此示例显示了 AND 运算符的真值表:

SELECT x AS "AND", x AND False AS "FALSE", x AND True AS "TRUE", x AND NULL AS "NULL"
  FROM logical2;
Copy

输出:

+-------+-------+-------+-------+
| AND   | FALSE | TRUE  | NULL  |
|-------+-------+-------+-------|
| False | False | False | False |
| True  | False | True  | NULL  |
| NULL  | False | NULL  | NULL  |
+-------+-------+-------+-------+
Copy
语言: 中文