Maison  >  Article  >  base de données  >  Pourquoi la fonction SUM de MySQL renvoie-t-elle « 0 » au lieu de NULL ?

Pourquoi la fonction SUM de MySQL renvoie-t-elle « 0 » au lieu de NULL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 18:43:02709parcourir

Why Does MySQL's SUM Function Return '0' Instead of NULL?

Récupérer '0' au lieu de NULL à l'aide de la fonction SUM de MySQL

Lors de l'utilisation de la fonction SUM dans MySQL pour calculer la somme des valeurs dans un colonne, la fonction renvoie NULL si aucune valeur correspondante n'est trouvée. Ce comportement peut être problématique si vous souhaitez que la fonction renvoie 0 dans de tels cas.

Pour surmonter ce problème, la fonction COALESCE peut être utilisée. COALESCE prend deux arguments : le premier argument est l'expression que vous souhaitez évaluer, et le deuxième argument est la valeur que vous souhaitez renvoyer si le premier argument est NULL.

Dans le cas de la fonction SOMME, la syntaxe suivante peut être utilisé :

<code class="sql">SELECT COALESCE(SUM(Column_1), 0)
FROM Table
WHERE Column_2 = 'Test'</code>

Dans cet exemple, l'expression SUM(Column_1) est évaluée. Si aucune valeur correspondante pour Column_2 n'est trouvée, l'expression renverra NULL. Cependant, la fonction COALESCE renverra alors la valeur par défaut spécifiée de 0 au lieu de NULL.

Cette approche garantit que la fonction SUM renverra toujours une valeur numérique, même si aucune valeur correspondante n'est trouvée. En conséquence, vous pouvez éviter les problèmes potentiels qui peuvent survenir lorsque vous traitez des valeurs NULL.

Informations supplémentaires :

Pour une compréhension plus complète du fonctionnement de COALESCE, considérons le scénario suivant : trois tables ont été créées, chacune avec des types de données différents.

  • Tableau 1 :Toutes les valeurs numériques
  • Tableau 2 : Toutes les valeurs NULL
  • Tableau 3 : Un mélange de valeurs numériques et NULL

L'exécution de la requête suivante sur ces tables démontre la fonctionnalité de COALESCE :

<code class="sql">SELECT  table_name,
        description,
        expected_sum,
        COALESCE(SUM(val), 0) AS actual_sum
FROM (
    SELECT  'foo'                   AS table_name,
            'mixed null/non-null'   AS description,
            21                      AS expected_sum,
            val
    FROM    Table1
    UNION ALL
    SELECT  'bar'                   AS table_name,
            'all non-null'          AS description,
            21                      AS expected_sum,
            val
    FROM    Table2
    UNION ALL
    SELECT  'baz'                   AS table_name,
            'all null'              AS description,
            0                       AS expected_sum,
            val
    FROM    Table3
) AS subquery
GROUP BY
    table_name,
    description,
    expected_sum
ORDER BY
    table_name,
    description;</code>

Les résultats de cette requête démontrent que quel que soit le type de données, COALESCE garantit que la fonction SUM renvoie une valeur numérique, permettant une gestion des données plus flexible et prévisible dans vos applications MySQL.

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