Maison > base de données > tutoriel mysql > le corps du texte

Comment gérez-vous les valeurs nulles dans la fonction SUM de MySQL avec COALESCE ?

DDD
Libérer: 2024-11-02 08:47:29
original
675 Les gens l'ont consulté

How do you handle null values in MySQL's SUM function with COALESCE?

Comment gérer les valeurs nulles dans la fonction SUM de MySQL avec COALESCE

Lors de l'exécution de calculs SUM dans MySQL, il peut être difficile de gérer des scénarios dans lesquels aucune valeur ne répond aux critères spécifiés, ce qui entraîne une sortie NULL. Pour résoudre ce problème, MySQL fournit la fonction COALESCE, qui offre un moyen pratique de spécifier une valeur de retour par défaut en cas de valeurs NULL.

Considérez la fonction MySQL suivante :

SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'
Copier après la connexion

Si aucune entrée dans Column_2 ne contient le texte « Test », cette fonction renverra NULL. Cependant, dans certains cas, il est préférable de renvoyer 0 au lieu de NULL lorsqu'aucune valeur n'est trouvée.

Pour y parvenir, nous pouvons utiliser la fonction COALESCE dans le calcul SUM, comme démontré ci-dessous :

SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...
Copier après la connexion

En spécifiant 0 comme valeur par défaut dans la fonction COALESCE, nous remplaçons efficacement toutes les valeurs NULL dans le calcul SUM par 0, garantissant que le résultat est toujours un entier (même si aucune valeur ne répond aux critères SUM).

Informations supplémentaires

La fonction COALESCE est polyvalente et peut être utilisée dans divers scénarios au-delà de la gestion des valeurs NULL dans les calculs de somme. Il est particulièrement utile dans les situations où vous devez fournir une valeur de secours pour les données manquantes ou incomplètes.

Pour illustrer davantage l'utilisation et les avantages de COALESCE, considérez les exemples de tableaux suivants avec différents types de données :

  • foo : contient à la fois des nombres et des valeurs NULL
  • bar : contient uniquement des nombres non nuls
  • baz : contient uniquement des valeurs NULL

Utilisation du Fonction COALESCE dans une requête qui calcule la somme des valeurs de ces tables, nous pouvons garantir des résultats cohérents malgré la présence de valeurs nulles :

SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz
Copier après la connexion

Les résultats de cette requête seront les suivants :

TABLE_NAME DESCRIPTION EXPECTED_SUM ACTUAL_SUM
foo mixed null/non-null 21 21
bar all non-null 21 21
baz all null 0 0

Comme le montrent les résultats, COALESCE garantit que le calcul SUM renvoie toujours 0 pour la table baz, où toutes les valeurs sont NULL, et fournit la somme attendue de 21 pour les tables foo et bar.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!