В SQL, все логические операторы
возвращают TRUE (ИСТИНА), FALSE (ЛОЖЬ)
или NULL (UNKNOWN, неизвестно). В MySQL это
реализовано как 1 (TRUE,
ИСТИНА), 0 (FALSE, ЛОЖЬ) или
NULL. Это справедливо для
большинства SQL СУБД, однако
некоторые возвращают любое
положительное значение как
значение TRUE.
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 && 1;-> 1 mysql>SELECT 1 && 0;-> 0 mysql>SELECT 1 && NULL;-> NULL mysql>SELECT 0 && NULL;-> 0 mysql>SELECT NULL && 0;-> 0
Обратите внимание, что версии
MySQL до 4.0.5 прекращали
вычисление, встретив первый
NULL, вместо того, чтобы
продолжать вычисление
выражений с целью нахождения
возможных значений 0.
Это означает, что в этих версиях
выражение SELECT (NULL AND 0)
возвращает NULL вместо
0. В 4.0.5 код был
переписан так, чтобы
оптимизация сохранилась, но
результат всегда был таков, как
требует того ANSI.
OR, ||
Логическое ИЛИ. Возвращает
1, если любой из
операндов не 0,
NULL если один из
операндов NULL, в
остальных случаях возвращает
0.
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
Логический XOR (побитовое
сложение по модулю 2) Возвращает
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).
XOR был реализован в
4.0.2.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
