* 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).