DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) logical-operators

Info Catalog (mysql.info) comparison-operators (mysql.info) non-typed-operators
 
 12.1.4 Logical Operators
 ------------------------
 
 In SQL, all logical operators evaluate to `TRUE', `FALSE', or `NULL'
 (`UNKNOWN'). In MySQL, these are implemented as 1 (`TRUE'), 0
 (`FALSE'), and `NULL'. Most of this is common to different SQL database
 servers, although some servers may return any non-zero value for `TRUE'.
 
    * `NOT', `!'
 
      Logical NOT. Evaluates to `1' if the operand is `0', to `0' if the
      operand is non-zero, and `NOT NULL' returns `NULL'.
 
           mysql> SELECT NOT 10;
                   -> 0
           mysql> SELECT NOT 0;
                   -> 1
           mysql> SELECT NOT NULL;
                   -> NULL
           mysql> SELECT ! (1+1);
                   -> 0
           mysql> SELECT ! 1+1;
                   -> 1
 
      The last example produces `1' because the expression evaluates the
      same way as `(!1)+1'.
 
      Note that the precedence of the `NOT' operator changed in MySQL
      5.0.2. See  operator-precedence.
 
    * `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.
 
           mysql> SELECT 1 && 1;
                   -> 1
           mysql> SELECT 1 && 0;
                   -> 0
           mysql> SELECT 1 && NULL;
                   -> NULL
           mysql> SELECT 0 && NULL;
                   -> 0
           mysql> SELECT NULL && 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'.
 
           mysql> SELECT 1 || 1;
                   -> 1
           mysql> SELECT 1 || 0;
                   -> 1
           mysql> SELECT 0 || 0;
                   -> 0
           mysql> SELECT 0 || NULL;
                   -> NULL
           mysql> SELECT 1 || 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.
 
           mysql> SELECT 1 XOR 1;
                   -> 0
           mysql> SELECT 1 XOR 0;
                   -> 1
           mysql> SELECT 1 XOR NULL;
                   -> NULL
           mysql> SELECT 1 XOR 1 XOR 1;
                   -> 1
 
      `a XOR b' is mathematically equal to `(a AND (NOT b)) OR ((NOT a)
      and b)'.
 
Info Catalog (mysql.info) comparison-operators (mysql.info) non-typed-operators
automatically generated byinfo2html