6.1. Logical Operators
Logical Operators
Operator | Description | Example |
---|---|---|
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 |
Effect of NULL on Logical Operators
The result of an AND
comparison may be NULL
if one or bothsides of the expression are NULL
. If at least one side of anAND
operator is FALSE
the expression evaluates to 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
The result of an OR
comparison may be NULL
if one or bothsides of the expression are NULL
. If at least one side of anOR
operator is TRUE
the expression evaluates to 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
The following truth table demonstrates the handling ofNULL
in AND
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 |
The logical complement of NULL
is NULL
as shown in the following example:
- SELECT NOT CAST(null AS boolean); -- null
The following truth table demonstrates the handling of NULL
in NOT
:
a | NOT a |
---|---|
TRUE | FALSE |
FALSE | TRUE |
NULL | NULL |