Maison  >  Article  >  base de données  >  Comment renvoyer \'0\' au lieu de NULL lors de l'utilisation de la fonction SUM de MySQL sur des ensembles de données vides ?

Comment renvoyer \'0\' au lieu de NULL lors de l'utilisation de la fonction SUM de MySQL sur des ensembles de données vides ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-03 03:34:30501parcourir

How to Return '0' Instead of NULL When Using MySQL's SUM Function on Empty Datasets?

Comment récupérer « 0 » de la fonction SUM de MySQL lorsqu'aucune valeur n'existe

La fonction SUM de MySQL offre un moyen pratique d'agréger des valeurs numériques valeurs. Cependant, lorsqu'aucune ligne correspondante n'est trouvée lors de la requête, la fonction SUM renvoie généralement une valeur NULL. Pour certains cas d'utilisation, il peut être plus souhaitable de renvoyer « 0 » au lieu de NULL.

Utiliser COALESCE pour résoudre le problème

La solution à ce problème réside dans la fonction COALESCE. COALESCE vous permet de spécifier une valeur par défaut à renvoyer lorsque le premier argument est évalué à NULL.

Considérez l'exemple suivant :

SELECT COALESCE(SUM(Column_1),0)
FROM Table
WHERE Column_2 = 'Test'

Dans cette requête, COALESCE entoure la fonction SUM. Si la SOMME de Column_1 pour les lignes où Column_2 est égal à « Test » renvoie une valeur NULL, COALESCE fournira à la place « 0 ».

Démonstration et plus d'informations

Visitez http ://www.sqlfiddle.com/#!2/d1542/3/0 pour une démonstration en direct de la solution.

Pour approfondir les nuances de COALESCE, considérons le scénario suivant impliquant trois tables avec des distributions de valeurs :

  • Le tableau 'foo' contient un mélange de valeurs NULL et non NULL.
  • Le tableau 'bar' contient uniquement des valeurs non NULL.
  • La table 'baz' contient exclusivement des valeurs NULL.

En appliquant la requête suivante :

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

Vous obtiendrez les résultats 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 vous pouvez observer, la fonction COALESCE renvoie efficacement « 0 » pour la table « baz », où toutes les valeurs sont NULL.

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