逻辑运算符/布尔运算符¶
逻辑运算符返回针对一个或两个输入表达式的特定布尔运算的结果。
它们只能用作谓词(例如在 WHERE 子句中)。输入表达式必须是谓词。
本主题内容:
逻辑运算符/布尔运算符的列表¶
运算符 |
语法示例 |
描述 |
---|---|---|
|
|
同时匹配两个表达式( |
|
|
与表达式不匹配。 |
|
|
匹配任一表达式。 |
这些运算符的优先顺序如下所示(从高到低):
NOT
AND
OR
示例¶
第一个示例使用以下表和数据:
CREATE TABLE logical (t BOOLEAN, f BOOLEAN, n BOOLEAN); INSERT INTO logical (t, f, n) VALUES (True, False, NULL);
逻辑运算符通常用于 WHERE 子句:
SELECT t, f, n FROM logical WHERE t AND NOT f;输出:
+------+-------+------+ | T | F | N | |------+-------+------| | True | False | NULL | +------+-------+------+
以下示例显示了逻辑运算符的优先级:
第一个示例表明 AND 的优先级高于 OR 的优先级。第一个表达式的计算方式与第二个表达式相同,而不是与第三个表达式相同。
SELECT TRUE OR TRUE AND FALSE, TRUE OR (TRUE AND FALSE), (TRUE OR TRUE) AND FALSE;输出:
+------------------------+--------------------------+--------------------------+ | TRUE OR TRUE AND FALSE | TRUE OR (TRUE AND FALSE) | (TRUE OR TRUE) AND FALSE | |------------------------+--------------------------+--------------------------| | True | True | False | +------------------------+--------------------------+--------------------------+下一个示例表明 NOT 的优先级高于 AND 的优先级。第一个表达式的计算方式与第二个表达式相同,而不是与第三个表达式相同。
SELECT NOT FALSE AND FALSE, (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE);输出:
+---------------------+-----------------------+-----------------------+ | NOT FALSE AND FALSE | (NOT FALSE) AND FALSE | NOT (FALSE AND FALSE) | |---------------------+-----------------------+-----------------------| | False | False | True | +---------------------+-----------------------+-----------------------+下一个示例表明 NOT 的优先级高于 OR 的优先级。第一个表达式的计算方式与第二个表达式相同,而不是与第三个表达式相同。
SELECT NOT FALSE OR TRUE, (NOT FALSE) OR TRUE, NOT (FALSE OR TRUE);输出:
+-------------------+---------------------+---------------------+ | NOT FALSE OR TRUE | (NOT FALSE) OR TRUE | NOT (FALSE OR TRUE) | |-------------------+---------------------+---------------------| | True | True | False | +-------------------+---------------------+---------------------+
接下来的几个示例显示了逻辑运算符的“真值表”。
创建新表和数据:
CREATE TABLE logical2 (x BOOLEAN); INSERT INTO logical2 (x) VALUES (False), (True), (NULL);此示例显示了 OR 运算符的真值表:
SELECT x AS "OR", x OR False AS "FALSE", x OR True AS "TRUE", x OR NULL AS "NULL" FROM logical2;输出:
+-------+-------+------+------+ | OR | FALSE | TRUE | NULL | |-------+-------+------+------| | False | False | True | NULL | | True | True | True | True | | NULL | NULL | True | NULL | +-------+-------+------+------+此示例显示了 AND 运算符的真值表:
SELECT x AS "AND", x AND False AS "FALSE", x AND True AS "TRUE", x AND NULL AS "NULL" FROM logical2;输出:
+-------+-------+-------+-------+ | AND | FALSE | TRUE | NULL | |-------+-------+-------+-------| | False | False | False | False | | True | False | True | NULL | | NULL | False | NULL | NULL | +-------+-------+-------+-------+