En SQL, todos los operadores lógicos se evalúan a
TRUE
, FALSE
, o
NULL
(UNKNOWN
). En MySQL,
se implementan como 1 (TRUE
), 0
(FALSE
), y NULL
. La
mayoría de esto es común en diferentes servidores de bases de
datos SQL aunque algunos servidores pueden retornar cualquier
valor distinto a cero para TRUE
.
NOT
, !
NOT lógica. Se evalúa a 1
si el
operando es 0
, a 0
si
el operando es diferente a cero, y 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
El último ejemplo produce 1
porque la
expresión se evalúa igual que (!1)+1
.
AND
, &&
AND lógica. Se evalúa a 1
si todos los
operandos son distintos a cero y no NULL
,
a 0 si uno o más operandos son 0
, de
otro modo 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
OR
, ||
OR lógica. Cuando ambos ooperandos son no
NULL
, el resultado es 1 si algún
operando es diferente a cero, y 0 de otro modo. Con un
operando NULL
el resultado es 1 si el
otro operando no es cero, y NULL
de otro
modo. Si ambos operandos son NULL
, el
resultado es NULL
.
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ógica. Retorna NULL
si algún
operando es NULL
. Para operandos no
NULL
, evalúa a 1 si un número par de
operandos es distinto a cero, sino retorna 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
es matemáticamente igual a
(a AND (NOT b)) OR ((NOT a) and b)
.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.