Spec-Zone .ru
спецификации, руководства, описания, API
|
В SQL все логические операторы оценивают к TRUE
, FALSE
,
или NULL
(UNKNOWN
). В MySQL они реализуются как 1
(TRUE
), 0 (FALSE
), и NULL
.
Большая часть из этого характерна для различных серверов базы данных SQL, хотя некоторые серверы могут
возвратить любое ненулевое значение для TRUE
.
MySQL оценивает любого ненулевого, не -NULL
значение к TRUE
. Например, следующие операторы все оценивают к TRUE
:
mysql>SELECT 10 IS TRUE;
-> 1mysql>SELECT -10 IS TRUE;
-> 1mysql>SELECT 'string' IS NOT NULL;
-> 1
Логичный НЕТ. Оценивает к 1
если операнд 0
,
к 0
если операнд является ненулевым, и NOT
NULL
возвраты NULL
.
mysql>SELECT NOT 10;
-> 0mysql>SELECT NOT 0;
-> 1mysql>SELECT NOT NULL;
-> NULLmysql>SELECT ! (1+1);
-> 0mysql>SELECT ! 1+1;
-> 1
Последний пример производит 1
потому что выражение оценивает тот же
самый путь как (!1)+1
.
Логичный И. Оценивает к 1
если все операнды являются ненулевыми и нет
NULL
, к 0
если один или более операндов
0
, иначе NULL
возвращается.
mysql>SELECT 1 && 1;
-> 1mysql>SELECT 1 && 0;
-> 0mysql>SELECT 1 && NULL;
-> NULLmysql>SELECT 0 && NULL;
-> 0mysql>SELECT NULL && 0;
-> 0
Логичный ИЛИ. Когда оба операнда не -NULL
, результат 1
если какой-либо операнд является ненулевым, и 0
иначе. С a NULL
операнд, результат 1
если другой операнд является ненулевым, и NULL
иначе. Если оба операнда NULL
,
результат NULL
.
mysql>SELECT 1 || 1;
-> 1mysql>SELECT 1 || 0;
-> 1mysql>SELECT 0 || 0;
-> 0mysql>SELECT 0 || NULL;
-> NULLmysql>SELECT 1 || NULL;
-> 1
Логический XOR. Возвраты NULL
если любой операнд NULL
.
Для не -NULL
операнды, оценивает к 1
если
нечетное число операндов является ненулевым, иначе 0
возвращается.
mysql>SELECT 1 XOR 1;
-> 0mysql>SELECT 1 XOR 0;
-> 1mysql>SELECT 1 XOR NULL;
-> NULLmysql>SELECT 1 XOR 1 XOR 1;
-> 1
a XOR b
математически равно (a AND (NOT b)) OR
((NOT a) and b)
.