Boolean operations
All the operators examined so far return NULL
if any operand is NULL
.With boolean operators, things are a bit more complex:

not NULL = NULL

NULL or false = NULL

NULL or true = true

NULL or NULL = NULL

NULL and false = false

NULL and true = NULL

NULL and NULL = NULL
In version 2.5 and earlier, Firebird SQL doesn’t have a boolean data type;nor are true
and false
existing constants.In the leftmost column of the explanatory table below, “true
” and “false
” represent expressions (fields, variables, composites…) that evaluate to true
/false
.
If A is NULL , then: 
Is:  Because: 



If 


“ 


“ 


“ 


“ 


“ 


“ 
All these results are in accordance with boolean logic.The fact that you don’t need to know X
's value to compute “X or true
” and “X and false
” is also the basis of a feature found in various programming languages: shortcircuit boolean evaluation.
The above results can be generalised as follows for expressions with one type of binary boolean operator (and
 or
) and any number of operands:
 Disjunctions (“
A or B or C or D or …
”) 

If at least one operand is
true
, the result istrue
. 
Else, if at least one operand is
NULL
, the result isNULL
. 
Else (i.e. if all operands are
false
) the result isfalse
.

 Conjunctions (“
A and B and C and D and …
”) 

If at least one operand is
false
, the result isfalse
. 
Else, if at least one operand is
NULL
, the result isNULL
. 
Else (i.e. if all operands are
true
) the result istrue
.

Or, shorter:

TRUE
beatsNULL
in a disjunction (OR
operation); 
FALSE
beatsNULL
in a conjunction (AND
operation); 
In all other cases,
NULL
wins.
If you have trouble remembering which constant rules which operation, look at the second letter: tRue prevails with oR — fAlse with And.