Presto 0.100 Documentation

5.1. 逻辑运算符

5.1. 逻辑运算符

逻辑运算符

运算符 描述 示例
AND True if both values are true a AND b
OR True if either value is true a OR b
NOT True if the value is false NOT a

逻辑运算符中NULL的效果

如果AND表达式中有一边或者两边都是null,那么整个AND表达式的结果将会是null。如果AND表达式中至少有一边的值是false,那么整个AND表达式的值都是false。:

SELECT CAST(null AS boolean) AND true; => null

SELECT CAST(null AS boolean) AND false; => false

SELECT CAST(null AS boolean) AND CAST(null AS boolean); => null

如果OR表达式的一边或者两边都是null,那么整个OR表达式的值就是null。如果OR表达式中只要有一边的值为true,那么整个OR表达式的值就是true。:

SELECT CAST(null AS boolean) OR CAST(null AS boolean); => null

SELECT CAST(null AS boolean) OR false; => null

SELECT CAST(null AS boolean) OR true; => true

下表说明了AND和OR表达式的计算规则:

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的NOT表达式的结果还是NULL,如下所示::

SELECT NOT CAST(null AS boolean); => null

下表说明了NOT表达式的计算规则:

a NOT a
TRUE FALSE
FALSE TRUE
NULL NULL