...
A | B | A AND B | A OR B |
FALSE | FALSE | FALSE | FALSE |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | TRUE |
NULL | FALSE | FALSE | NULL |
TRUE | NULL | NULL | TRUE |
NULL | NULL | NULL | NULL |
FALSE | MISSING | FALSE | MISSING |
TRUE | MISSING | MISSING | TRUE |
NULL | MISSING | MISSING | NULL |
MISSING | MISSING | MISSING | MISSING |
A | NOT A |
FALSE | TRUE |
TRUE | FALSE |
NULL | NULL |
MISSING | MISSING |
...
Operator | Non-NULL value | NULL | MISSING |
IS NULL | FALSE | TRUE | MISSING |
IS NOT NULL | TRUE | FALSE | MISSING |
IS MISSING | FALSE | FALSE | TRUE |
IS NOT MISSING | TRUE | TRUE | FALSE |
IS UNKNOWN | FALSE | TRUE | TRUE |
IS NOT UNKNOWN | TRUE | FALSE | FALSE |
Arrays are a separate “storage” data type
MISSING gets converted to NULL on array constructionarrays have a length
indices from 0 to length -1
access to out-of-bounds indices result in MISSING
...