Em SQL, todos os operadores logicos avaliam TRUE (VERDADEIRO),
FALSE (FALSO) ou NULL (DESCONHECIDO). No MySQL, esta
implementação é como 1
(TRUE),
0
(FALSE), e NULL
. A
maioria deles é comum entre diferentes bancos de dados SQL.
no entanto alguns podem retonar qualquer valor diferente de
zero para TRUE.
NOT
, !
NOT logico. Avalia como 1
se o operador
é 0
, como 0
se o
operador é diferente de zero, e NOT
NULL
retorna 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
O último exemplo produz 1
pois a a
expressão é avaliada como (!1)+1
.
AND
, &&
AND lógico. Avalia como 1
se todos os
operandos são diferentes de zero e não é
NULL
, como 0
se um
ou mais operandos são 0
, senão
retorna 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
Por favor note que as versões do MySQL anteriores a
versão 4.0.5 param a avaliação quando um valor
NULL
é encontrado, e não continua o
processo buscando por possíveis 0
s.
Isto significa que nessa versão, SELECT (NULL
AND 0)
retorna NULL
ao invés
de 0
. Na versão 4.0.5 o código tem
sido re-elaborado para que o resultado sempre seja como
prescrito pelo padrão SQL utilizando a otimização
sempre que possível.
OR
, ||
OR lógico. Avalia como 1
se algum
operando é diferente de zero e como
NULL
se algum operando for
NULL
, senão 0
é
retornado.
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 lógico. Retorna NULL
se o operando
também é NULL
. Para operandos não
NULL
, avalia como 1
se um número ímpar de operandos é diferente de zero,
senão 0
é retornado.
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
é matematicamente igual a
(a AND (NOT b)) OR ((NOT a) and b)
.
XOR
foi adicionado na versão 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.