La valeur NULL peut être surprenante
jusqu'à ce que vous vous y habituiez. Conceptuellement,
NULL représente une valeur qui manque, ou
une valeur inconnue, et elle est traitée différemment des
autres valeurs. Pour tester la présence de la valeur
NULL, vous ne pouvez pas utiliser les
opérateurs arithmétiques habituels comme
=, <, ou
<>. Pour le voir, il suffit d'essayer
ceci :
mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+
Clairement, vous n'obtiendrez aucun résultat valable pour ces
comparaisons. Utilisez les opérateurs IS
NULL et IS NOT NULL à la
place :
mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
| 0 | 1 |
+-----------+---------------+
Notez que deux NULL sont considérés comme
égaux lors que vous utilisez la clause GROUP
BY.
Avec MySQL, 0 et NULL représentent le
booléen faux, et tout le reste représente le booléen vrai.
La valeur par défaut du booléen vrai issue d'une comparaison
est 1.
Lorsque vous utilisez la clause ORDER BY,
les valeurs NULL sont toujours triées en
premier, même si vous utilisez l'attribut
DESC.
Ce traitement particulier de NULL explique
pourquoi, dans la section précédente, il était nécessaire
de déterminer quel animal ne vivait plus en utilisant la
fonction mort IS NOT NULL au lieu de
mort <> NULL.
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.
