Presto | 逻辑运算符
逻辑运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| AND | 当运算符 AND 两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。 | a AND b |
| OR | 当运算符 OR 两边的表达式的结果只要有一个为 true 时,整个运算结果为 true;两边的表达式的结果均为 false,则结果为 false。 | a OR b |
| NOT | 如果布尔值为 false 返回 true;如果布尔值为 true 返回 false。 | NOT a |
NULL 值对逻辑运算符的影响
如果表达式的一边或两边是 NULL,那么 AND 运算符的结果可能是 NULL。如果 AND 运算符至少有一边是 FALSE,那么表达式的结果为 FALSE:
1 | SELECT CAST(null AS boolean) AND true; -- null |
如果表达式的一边或两边是 NULL,那么 OR 运算符较的结果可能是 NULL。如果一个 OR 运算符的至少一边是 TRUE,那么表达式的结果为 TRUE:
1 | SELECT CAST(null AS boolean) OR CAST(null AS boolean); -- null |
下面的真值表展示了在 AND 和 OR 中对 NULL 的处理:
| a | b | a AND b | a OR b |
|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE |
| TRUE | FALSE | FALSE | TRUE |
| TRUE | NULL | NULL | TRUE |
| FALSE | TRUE | FALSE | TRUE |
| FALSE | FALSE | FALSE | FALSE |
| FALSE | NULL | FALSE | NULL |
| NULL | TRUE | NULL | TRUE |
| NULL | FALSE | FALSE | NULL |
| NULL | NULL | NULL | NULL |
如下面的例子所示,NULL 的逻辑非是 NULL:
1 | SELECT NOT CAST(null AS boolean); -- null |
下面的真值表演示了 NOT 中对 NULL 的处理:
| a | NOT a |
|---|---|
| TRUE | FALSE |
| FALSE | TRUE |
| NULL | NULL |
(END)
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
