Spec-Zone.ru › MySQL 5.7

12.4.3 Логические операторы

Таблица 12.5 Логические операторы

Таблица 12.5 Логические операторы
Имя Описание
AND, && Логическое И
NOT, ! Инвертирует значение
OR, || Логическое ИЛИ
XOR Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ

В SQL все логические операторы возвращают значение TRUE, FALSE или NULL (UNKNOWN). В MySQL они реализованы как 1 (TRUE), 0 (FALSE) и NULL. Большинство из этих правил общие для различных серверов баз данных SQL, хотя некоторые серверы могут возвращать любое ненулевое значение для TRUE.

MySQL рассматривает любое ненулевое, не-NULL значение как TRUE. Например, следующие выражения все оцениваются как TRUE:

mysql> SELECT 10 IS TRUE;
-> 1
mysql> SELECT -10 IS TRUE;
-> 1
mysql> SELECT 'string' IS NOT NULL;
-> 1
  • NOT, !

    Логическое НЕ. Возвращает 1, если операнд равен 0, 0, если операнд отличен от нуля, и NOT NULL возвращает 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
    

    Последний пример даёт результат 1, так как выражение оценивается так же, как и (!1)+1.

  • AND, &&

    Логическое И. Возвращает 1, если все операнды отличны от нуля и не NULL, 0, если один или несколько операндов равны 0, в противном случае возвращается NULL.

    mysql> SELECT 1 AND 1;
            -> 1
    mysql> SELECT 1 AND 0;
            -> 0
    mysql> SELECT 1 AND NULL;
            -> NULL
    mysql> SELECT 0 AND NULL;
            -> 0
    mysql> SELECT NULL AND 0;
            -> 0
    
  • OR, ||

    Логическое ИЛИ. Если оба операнда не равны NULL, результат равен 1, если любой операнд отличен от нуля, и 0 в противном случае. С операндом NULL результат равен 1, если другой операнд отличен от нуля, и NULL в противном случае. Если оба операнда равны NULL, результат равен NULL.

    mysql> SELECT 1 OR 1;
            -> 1
    mysql> SELECT 1 OR 0;
            -> 1
    mysql> SELECT 0 OR 0;
            -> 0
    mysql> SELECT 0 OR NULL;
            -> NULL
    mysql> SELECT 1 OR NULL;
            -> 1
    
    Примечание

    Если включен режим SQL PIPES_AS_CONCAT, || обозначает оператор конкатенации строк по стандарту SQL (как CONCAT()).

  • XOR

    Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. Возвращает NULL, если любой операнд равен NULL. Для операндов, отличных от NULL, возвращает 1, если количество ненулевых операндов нечётно, иначе возвращается 0.

    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 математически равно (a AND (NOT b)) OR ((NOT a) and b).

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/logical-operators.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API