# 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