为什么 MySQL 的 SUM 函数返回'0”而不是 NULL?

Patricia Arquette
发布: 2024-10-30 18:43:02
原创
637 人浏览过

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

使用 MySQL 的 SUM 函数检索 '0' 而不是 NULL

当使用 MySQL 中的 SUM 函数计算 a 中值的总和时列,如果未找到匹配值,则该函数返回 NULL。如果您希望函数在这种情况下返回 0,这种行为可能会出现问题。

要解决此问题,可以使用 COALESCE 函数。 COALESCE 接受两个参数:第一个参数是您想要计算的表达式,第二个参数是您想要在第一个参数为 NULL 时返回的值。

对于 SUM 函数,以下语法可以使用:

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

在此示例中,将计算 SUM(Column_1) 表达式。如果未找到 Column_2 的匹配值,则表达式将返回 NULL。但是,COALESCE 函数将返回指定的默认值 0,而不是 NULL。

此方法可确保 SUM 函数始终返回数值,即使没有找到匹配值也是如此。因此,您可以避免处理 NULL 值时可能出现的潜在问题。

其他信息:

为了更全面地了解 COALESCE 的工作原理,考虑以下场景:已创建三个表,每个表具有不同的数据类型。

  • 表 1: 所有数值
  • 表 2: 所有 NULL 值
  • 表 3: 数字和 NULL 值的混合

对这些表运行以下查询演示了 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>
登录后复制

此查询的结果表明,无论数据类型如何,COALESCE 都能确保 SUM 函数返回数值,从而在 MySQL 应用程序中实现更灵活和可预测的数据处理。

以上是为什么 MySQL 的 SUM 函数返回'0”而不是 NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!