Maison > Article > base de données > Pourquoi la fonction SUM de MySQL renvoie-t-elle « 0 » au lieu de 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.
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!