首页  >  文章  >  数据库  >  在空数据集上使用 MySQL 的 SUM 函数时如何返回'0”而不是 NULL?

在空数据集上使用 MySQL 的 SUM 函数时如何返回'0”而不是 NULL?

Barbara Streisand
Barbara Streisand原创
2024-11-03 03:34:30501浏览

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

当不存在值时如何从 MySQL 的 SUM 函数检索“0”

MySQL 中的 SUM 函数提供了一种方便的方法来聚合数值价值观。但是,当查询期间没有找到匹配的行时,SUM 函数通常返回 NULL 值。对于某些用例,返回“0”而不是 NULL 可能更合适。

利用 COALESCE 解决问题

此问题的解决方案在于合并函数。 COALESCE 允许您指定当第一个参数计算结果为 NULL 时要返回的默认值。

请考虑以下示例:

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

在此查询中,COALESCE 环绕 SUM 函数。如果 Column_2 等于“Test”的行的 Column_1 的 SUM 返回 NULL 值,COALESCE 将提供“0”。

演示和更多信息

访问 http ://www.sqlfiddle.com/#!2/d1542/3/0 观看解决方案的现场演示。

要深入研究 COALESCE 的细微差别,请考虑以下场景,其中涉及三个不同的表值分布:

  • 表“foo”包含 NULL 和非 NULL 值的混合。
  • 表“bar”仅包含非 NULL 值。
  • 表 'baz' 只包含 NULL 值。

通过应用以下查询:

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

您将获得以下结果:

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

As您可以观察到,COALESCE 函数有效地为“baz”表返回“0”,其中所有值均为 NULL。

以上是在空数据集上使用 MySQL 的 SUM 函数时如何返回'0”而不是 NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn