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.