Maison >base de données >tutoriel mysql >Comment puis-je exclure les valeurs NULL des instructions MySQL SELECT ?

Comment puis-je exclure les valeurs NULL des instructions MySQL SELECT ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-15 16:37:43174parcourir

How Can I Exclude NULL Values from MySQL SELECT Statements?

Filtrer les NULL dans les requêtes MySQL SELECT

Question : Comment puis-je récupérer uniquement des valeurs non nulles à l'aide des instructions MySQL SELECT ?

Les instructions

Standard MySQL SELECT * incluent toutes les colonnes, même celles avec des valeurs NULL. Pour récupérer uniquement les données non nulles, utilisez la condition IS NOT NULL :

<code class="language-sql">SELECT * 
FROM your_table
WHERE YourColumn IS NOT NULL;</code>

Cette requête renvoie les lignes où YourColumn ne contient pas NULL. MySQL prend également en charge la négation de l'opérateur d'égalité null-safe, bien qu'il ne s'agisse pas de SQL standard :

<code class="language-sql">SELECT *
FROM your_table
WHERE NOT (YourColumn <=> NULL);</code>

La gestion de plusieurs colonnes nécessite une stratégie différente. Une méthode utilise plusieurs instructions SELECT et UNION ALL :

<code class="language-sql">SELECT val1 AS val
FROM your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2
FROM your_table
WHERE val2 IS NOT NULL;</code>

Cette approche vérifie individuellement chaque colonne et combine les résultats. Cependant, cela peut être inefficace en raison de plusieurs analyses de table.

Pour éviter potentiellement plusieurs analyses, envisagez une instruction CASE avec une jointure croisée :

<code class="language-sql">SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM your_table
CROSS JOIN (SELECT 1 AS idx UNION ALL SELECT 2) t
HAVING val IS NOT NULL;</code>

Ceci sélectionne la première valeur non nulle de val1 et val2 pour chaque ligne et l'attribue à la colonne val.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn