Sélectionner uniquement les valeurs non nulles dans MySQL
- Comprendre les valeurs nulles dans MySQL
-
Sélectionnez uniquement les valeurs non nulles en utilisant
WHERE NOT
et<=>
dans MySQL
Cet article du didacticiel vous montrera comment écrire une instruction select dans MySQL qui supprime toutes les valeurs nulles de colonnes spécifiques.
Comprendre les valeurs nulles dans MySQL
Les valeurs NULL
nous aident à savoir quelles parties de n’importe quelle table sont vides et nous permettent de les traiter de manière appropriée.
Les raisons de supprimer des lignes ou des colonnes nulles d’une table dépendent en grande partie de ce que vous recherchez, mais un bon exemple est lorsque vous avez besoin de données d’une colonne spécifique dans une table, et si une ligne renvoie comme NULL
, cela ne sert à rien lire ces informations.
Lorsqu’il s’agit de tables volumineuses, la suppression des valeurs nulles peut faire gagner du temps et réduire les calculs nécessaires.
Au lieu d’écrire un script pour interroger une table, puis d’en écrire un autre pour parcourir les données et trouver des valeurs nulles, vous pouvez simplifier le processus en incluant une condition IS NOT NULL
dans le script initial.
SELECT * FROM 'table name'
WHERE 'column name' IS NOT NULL;
Le résultat sera le tableau complet sans lignes avec des valeurs NULL
basées sur la colonne spécifiée.
L’exemple ci-dessous prend une liste de codes postaux à Albany avec une catégorie true
ou false
de chaque côté pour différencier les codes postaux correctement saisis de ceux qui contiennent des fautes de frappe :
| code | cd_check |
| -------|----------|
| NULL | true |
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12359 | NULL |
| 12227 | true |
Pour supprimer uniquement la ligne avec une valeur NULL
dans la colonne cd_check
, appliquez le code suivant :
CREATE TABLE albany (
code INTEGER,
cd_check TEXT
);
INSERT INTO albany VALUES (NULL,"true");
INSERT INTO albany VALUES (12649,"false");
INSERT INTO albany VALUES (12248,"true");
INSERT INTO albany VALUES (12239,"true");
INSERT INTO albany VALUES (12359,NULL);
INSERT INTO albany VALUES (12227,"true");
SELECT code, cd_check FROM albany
WHERE cd_check IS NOT NULL;
Résultat:
| code | cd_check |
| -------|----------|
| NULL | true |
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12227 | true |
Ce qui précède a renvoyé la table sans la ligne contenant une valeur NULL
dans la colonne cd_check
. Cependant, comme une seule colonne a été spécifiée, la ligne avec une valeur NULL
reste sous la colonne de code.
Vous pouvez supprimer des lignes de plusieurs colonnes en ajoutant l’instruction AND
. L’instruction vérifiera dans les deux colonnes et renverra ce qui suit :
| code | cd_check |
| -------|----------|
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12227 | true |
Les deux lignes contenant des valeurs nulles ont été supprimées du tableau.
Sélectionnez uniquement les valeurs non nulles en utilisant WHERE NOT
et <=>
dans MySQL
Au lieu de placer IS NOT NULL
dans le script, vous pouvez utiliser l’alternative suivante :
Les opérateurs de comparaison WHERE NOT
et <=>
substituent IS NOT
lorsque WHERE
est suivi de NOT
.
Exemple:
SELECT code, cd_check FROM albany
WHERE NOT cd_check <=> NULL;
Bien que cela fonctionne également, il est préférable d’utiliser IS NOT NULL
, car il s’agit d’une meilleure pratique.