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 instructionsStandard 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!