12.4.3 Логические операторы
Таблица 12.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. -
Логическое И. Возвращает
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 -
Логическое ИЛИ. Если оба операнда не равны
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()). -
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. Возвращает
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.