NOT, !
Logical NOT. Evaluates to 1 if the
operand is 0, to 0 if
the operand is non-zero, and NOT NULL
returns NULL.
DQL condition :** NOT 10
-> 0
DQL condition :** NOT 0
-> 1
DQL condition :** NOT NULL
-> NULL
DQL condition :** ! (1+1)
-> 0
DQL condition :** ! 1+1
-> 1
The last example produces 1 because the
expression evaluates the same way as
(!1)+1.
AND
Logical AND. Evaluates to 1 if all
operands are non-zero and not NULL, to
0 if one or more operands are
0, otherwise NULL is
returned.
DQL condition :** 1 AND 1
-> 1
DQL condition :** 1 AND 0
-> 0
DQL condition :** 1 AND NULL
-> NULL
DQL condition :** 0 AND NULL
-> 0
DQL condition :** NULL AND 0
-> 0
OR
Logical OR. When both operands are
non-NULL, the result is
1 if any operand is non-zero, and
0 otherwise. With a
NULL operand, the result is
1 if the other operand is non-zero, and
NULL otherwise. If both operands are
NULL, the result is
NULL.
DQL condition :** 1 OR 1
-> 1
DQL condition :** 1 OR 0
-> 1
DQL condition :** 0 OR 0
-> 0
DQL condition :** 0 OR NULL
-> NULL
DQL condition :** 1 OR NULL
-> 1
XOR
Logical XOR. Returns NULL if either
operand is NULL. For
non-NULL operands, evaluates to
1 if an odd number of operands is
non-zero, otherwise 0 is returned.
DQL condition :** 1 XOR 1
-> 0
DQL condition :** 1 XOR 0
-> 1
DQL condition :** 1 XOR NULL
-> NULL
DQL condition :** 1 XOR 1 XOR 1
-> 1
a XOR b is mathematically equal to
(a AND (NOT b)) OR ((NOT a) and b).