Trabalhando com Valores Nulos (NULL
)
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 MariaDB 4.0.2 a 4.0.10 sempre ordenam, incorretamente, valores NULL
em primeiro independente da ordem escolhida.