Mathematical and string operations
The operations in this list always return NULL
:
-
1 + 2 + 3 + NULL
-
5 * NULL - 7
-
'Home ' || 'sweet ' || NULL
-
MyField = NULL
-
MyField <> NULL
-
NULL = NULL
If you have difficulty understanding why, remember that NULL
means “unknown”.You can also look at the following table where per-case explanations are provided.In the table we don’t write NULL
in the expressions (as said, this is often illegal);instead, we use two entities A and B that are both NULL
.A and B may be fields, variables, or even composite subexpressions — as long as they’re NULL
, they’ll all behave the same in the enclosing expressions.
If A and B are NULL , then: |
Is: | Because: |
---|---|---|
|
|
If |
|
|
If |
|
|
If |
|
|
If |
|
|
...but you also can’t tell if |
|
|
With |
Here is the complete list of math and string operators that return NULL
if at least one operand is NULL
:
-
+
,-
,*
, and/
-
!=
,~=
, and^=
(synonyms of<>
) -
<
,⇐
,>
, and>=
-
!<
,~<
, and^<
(low-precedence synonyms of>=
) -
!>
,~>
, and^>
(low-precedence synonyms of⇐
) -
||
-
[NOT] BETWEEN
-
[NOT] STARTING WITH
-
[NOT] LIKE
-
[NOT] CONTAINING
The explanations all follow the same pattern: if A
is unknown, you can’t tell if it’s greater than B
;if string S1
is unknown, you can’t tell if it contains S2
;etcetera.
Using LIKE
with a NULL
escape character would crash the server in Firebird versions up to and including 1.5.This bug was fixed in v.1.5.1.From that version onward, such a statement will yield an empty result set.