14.4.3 Логические операторы
Таблица 14.5 Логические операторы
В 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
-
Логическое НЕ. Возвращает
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.Оператор
!является нестандартным расширением и устарел; ожидается, что он будет удален в будущих версиях MySQL. В необходимых случаях приложения должны быть переработаны для использования стандартного оператора SQLNOTвместо него. -
Логическое И. Возвращает
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Оператор
&&является нестандартным расширением и устарел; ожидается, что его поддержка будет удалена в будущих версиях MySQL. В необходимых случаях приложения должны быть переработаны для использования стандартного оператора SQLANDвместо него. -
Логическое ИЛИ. Если оба операнда не
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()).Оператор
||является нестандартным расширением и устарел; ожидается, что его поддержка будет удалена в будущих версиях MySQL. Исключение: устаревание не применяется, если включенPIPES_AS_CONCAT, так как в этом случае||обозначает конкатенацию строк. -
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. Возвращает
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;-> 1a XOR bматематически равно(a AND (NOT b)) OR ((NOT a) and b).
© 2025 Oracle
Licensed under the GPLv2 License.