O valor NULL
pode ser supreendente até
você usá-lo. Conceitualmente, NULL
significa valor em falta ou valor desconhecido e é tratado de
uma forma diferente de outros valores. Para testar o valor
NULL
, você não pode usar os operadores de
comparações aritméticas como em =
,
<
, ou !=
. Para
demonstrar para você mesmo, tente executar a seguinte
consulta:
mysql> SELECT 1 = NULL, 1 != NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 != NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+
Claramente você não obterá resultados significativos destas
comparações. Utilize os operadores IS
NULL
e IS NOT NULL
no lugar:
mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
| 0 | 1 |
+-----------+---------------+
No MySQL, 0
ou NULL
significa falso e o resto é verdadeiro. O valor verdadeiro
por o padrão em uma operação booleana é
1
.
Este tratamento especial de NULL
é porque,
na seção anterior, foi necessário determinar quais animais
não estavam mais vivos usando death IS NOT
NULL
no lugar de death <>
NULL
.
Dois valores NULL
são considerados como
iguais em um GROUP BY
.
Ao fazer um ORDER BY
, valores
NULL
são apresentados primeiro se você
fizer ORDER BY ... ASC
e por último se
você fizer ORDER BY ... DESC
.
Note que o MySQL 4.0.2 a 4.0.10 sempre ordenam,
incorretamente, valores NULL
em primeiro
independente da ordem escolhida.
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.