"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-05
Parcourir:123

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, envisagez le scénario suivant impliquant trois tables avec des valeurs différentes. distributions de valeurs :

  • La table 'foo' contient un mélange de valeurs NULL et non NULL.
  • La table '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_NAMEDESCRIPTIONEXPECTED_SUMACTUAL_SUM
foomixte nul/non nul2121
bartous non nuls2121
baz all null00

Comme vous pouvez le constater, la fonction COALESCE renvoie efficacement '0' pour le ' baz', où toutes les valeurs sont NULL.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3