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.