Propagation of NULL values in expressions
NULL values will propagate through an expression according to a few logical and quite reasonable rules.
Functions
The general rule is that functions return NULL when the parameters fall outside the range for which the function is defined.
Example:
- asin(2) returns NULL
- log(-5) returns NULL
- round(A,0) returns NULL
As a result of the above follows that functions generally return NULL when any of the parameters necessary for the evaluation are NULL.
Example:
- sin(NULL) returns NULL
- chr(NULL) returns NULL
- if(NULL, A, B) returns B
- if(True, NULL, A) returns NULL
- if(True, A, NULL) returns A
The exception to the second rule are logical functions testing for type.
Example:
- isnull(NULL) returns True (-1)
- isnum(NULL) returns False (0)
Arithmetic and string operators
If NULL is encountered on any side of these operators NULL is returned.
Example:
- A + NULL returns NULL
- A - NULL returns NULL
- A / NULL returns NULL
- A * NULL returns NULL
- NULL / A returns NULL
- 0 / NULL returns NULL
- 0 * NULL returns NULL
- A & NULL returns A
Relational operators
If NULL is encountered on any side of relational operators special rules apply.
Example:
- NULL rel.op NULL returns NULL
- A <> NULL returns True (-1)
- A < NULL returns False (0)
- A <= NULL returns False (0)
- A = NULL returns False (0)
- A >= returns False (0)
- A > NULL returns False (0)