Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sélectionner des enregistrements sans valeurs NULL dans MySQL

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.