Sélectionner uniquement les valeurs non nulles dans MySQL

Raymond Peter 30 janvier 2023
  1. Comprendre les valeurs nulles dans MySQL
  2. Sélectionnez uniquement les valeurs non nulles en utilisant WHERE NOT et <=> dans MySQL
Sélectionner uniquement les valeurs non nulles 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.