Alors que la plupart des applications auront une certaine forme de technologie côté serveur ou même côté client qui peut être utilisée pour filtrer les résultats de requête de base de données qui peuvent contenir NULL
ou des valeurs vides, en utilisant un autre langage et cette charge supplémentaire d'exécution de code est généralement plus coûteuse pour le serveur et, en fait, largement inutile.
Au lieu de cela, ci-dessous, nous allons brièvement explorer comment utiliser le moteur MySQL lui-même pour effectuer cette tâche, en ne saisissant que les enregistrements que vous désirez tout en excluant ceux avec NULL
embêtant colonnes dans le mix.
IS NOT NULL Opérateur de comparaison
De loin la méthode la plus simple et la plus directe pour s'assurer que le jeu de résultats d'une colonne particulière ne contient pas NULL
valeurs est d'utiliser le IS NOT NULL
opérateur de comparaison.
Par exemple, si nous voulons sélectionner tous les enregistrements de nos books
table où le primary_author
la colonne n'est pas NULL
, la requête pourrait ressembler à ceci :
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
Puisque IS NOT NULL
se comporte comme n'importe quel autre comparateur, il peut être combiné avec d'autres WHERE
clauses pour filtrer davantage les résultats, comme si vous utilisiez =
, >
, <
, LIKE
et d'autres opérateurs de comparaison standard.
Filtrer NULL à partir de plusieurs colonnes
Dans certains cas, vous souhaiterez peut-être récupérer des résultats où non NULL
les valeurs sont présentes sur plusieurs colonnes. Par exemple, nous avons des enregistrements dans les books
tableau :
id | title | primary_author | published_date
1 | The Hobbit | Tolkien | 09-21-1937
2 | The Silmarillion | Tolkien | 09-15-1977
3 | The Name of the Wind | Rothfuss | 03-27-2007
4 | The Wise Man's Fear | Rothfuss | 03-01-2011
5 | The Doors of Stone | Rothfuss | NULL
6 | Beowulf | NULL | 01-01-1000
Prenez note que Les Portes de Pierre (id 5
) est non publié et donc la published_date
est NULL
. De même, Beowulf (id 6
) - le célèbre poème épique en vieil anglais - n'a pas d'auteur connu, donc primary_author
est NULL
.
Dans ce cas, nous pouvons souhaiter rechercher des résultats contenant uniquement les quatre premiers enregistrements, excluant ainsi les deux derniers enregistrements qui ont NULL
valeurs dans primary_author
ou published_date
. Cela peut être effectué avec cette simple instruction en utilisant AND
avec plusieurs opérateurs de comparaison :
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
Remarque :Les parenthèses ne sont pas obligatoires, mais il est recommandé d'inclure des comparateurs groupés pour une meilleure lisibilité.
Voilà; un simple opérateur de comparaison qui peut être utilisé pour filtrer tous les NULL
valeurs dans vos enregistrements.