Operadores Logicos
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
, como0
se o operador é diferente de zero, eNOT NULL
retornaNULL
.mysql>
SELECT NOT 10;
-> 0 mysql>SELECT NOT 0;
-> 1 mysql>SELECT NOT NULL;
-> NULL mysql>SELECT ! (1+1);
-> 0 mysql>SELECT ! 1+1;
-> 1O ú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
, como0
se um ou mais operandos são0
, senão retornaNULL
.mysql>
SELECT 1 && 1;
-> 1 mysql>SELECT 1 && 0;
-> 0 mysql>SELECT 1 && NULL;
-> NULL mysql>SELECT 0 && NULL;
-> 0 mysql>SELECT NULL && 0;
-> 0Por favor note que as versões do MariaDB 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íveis0
s. Isto significa que nessa versão,SELECT (NULL AND 0)
retornaNULL
ao invés de0
. 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 comoNULL
se algum operando forNULL
, senão0
é 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;
-> 1XOR
XOR lógico. Retorna
NULL
se o operando também éNULL
. Para operandos nãoNULL
, avalia como1
se um número ímpar de operandos é diferente de zero, senão0
é 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;
-> 1a XOR b
é matematicamente igual a(a AND (NOT b)) OR ((NOT a) and b)
.XOR
foi adicionado na versão 4.0.2.