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