gpt4 book ai didi

mysql - 为什么加法需要检查null而sum不需要检查null?

转载 作者:行者123 更新时间:2023-11-29 01:15:45 25 4
gpt4 key购买 nike

从中选择总和(a)有时候Sum的时候,我们不需要检查null值,但是在add的时候我们需要检查,谁能告诉我为什么?例子

总之我们不需要检查空值。

select sum(a) from
(
select 1 a, null b from dual union
select null, 1 b from dual
)

但是Addition我们需要检查,如果我们不检查它就是null

select sum(nvl(a,0) + nvl(b,0)) from 
(
select 1 a, null b from dual union
select null, 1 b from dual
)

最佳答案

通常,null 通过 A + B 等表达式传播。

异常包括聚合函数,通常在进行聚合之前删除 null

这意味着

SUM(a)

只是不考虑 a 为 null 的行

SUM(a + b)

将丢弃 a 为 nullb 为 null 的行(因为 a+bnull如果其中任何一个为 null)。

编辑为什么会这样。

因为null 表示缺失数据。无法评估对缺失数据进行操作的表达式,并再次导致缺失数据。聚合是明显的异常(exception):即使一些数据丢失,它们也可以执行。

关于mysql - 为什么加法需要检查null而sum不需要检查null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46684086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com