进行sum()操作,用不用必须进行isnull()判断呢?

时间:2022-11-09 17:56:05
进行sum()操作,用不用必须进行isnull()判断呢?
比如一个列,有的记录有值,有的记录为null,进行求和操作时,用不用进行isnull()判断呢?我试过,不进行isnull(字段名,0)的判断结果也是正确的.
可是我不明白,null与数值相加的结果是null呢?为何在记录中纵向求和时会以0替换null呢?

table表如下:
姓名      工资
qqq      1200
qqqw     2100
jfkd     null
jks      1400
对工资求和
select max(姓名) as 姓名,sum(工资)
from table
还是应该写成:
select max(姓名) as 姓名,sum(isnull(工资,0))
from table

还是应该写成:
select max(姓名) as 姓名,isnull(sum(工资),0)
from table
---------
几种写法哪种好呢?

11 个解决方案

#1


select max(姓名) as 姓名,sum(isnull(工资,0))
from table

#2


难道你认为
select null+1+2
等于3?

#3



select max(姓名) as 姓名,isnull(sum(工资),0)
from table

是错误的
------------------------------------------
select max(姓名) as 姓名,sum(工资)
from table
不会出错  也可以 但是不推荐
------------------------------------------
select max(姓名) as 姓名,sum(isnull(工资,0))
from table
建议写成这个样子

#4


聚集函数会自动忽略null

#5


to:crazy_boy1(小辉)

select max(姓名) as 姓名,sum(工资)
from table
不会出错  也可以 但是不推荐

为什么这个写法不推荐?

#6


谢了.
select max(姓名) as 姓名,sum(工资)
from table
不会出错  也可以 但是不推荐

为什么这个写法不推荐?

#7


不必考虑NULL值的问题,聚集函数一般都会忽略掉

#8


字符串連接的時候注意不要出現NULL就可以了。加法中會忽略的。

#9


写法严谨点而已

#10


不必考虑NULL值的问题,聚集函数一般都会忽略掉
=================
谢谢,是不是让系统去忽略这个问题,代码有点不严谨呀?可是手工写sum(isnull(field,0)),每个都这么写要多写多少代码呀?
继续请教.

#11


如果可能有空值,就必须使用,否则任何值加NULL,都为NULL。

#1


select max(姓名) as 姓名,sum(isnull(工资,0))
from table

#2


难道你认为
select null+1+2
等于3?

#3



select max(姓名) as 姓名,isnull(sum(工资),0)
from table

是错误的
------------------------------------------
select max(姓名) as 姓名,sum(工资)
from table
不会出错  也可以 但是不推荐
------------------------------------------
select max(姓名) as 姓名,sum(isnull(工资,0))
from table
建议写成这个样子

#4


聚集函数会自动忽略null

#5


to:crazy_boy1(小辉)

select max(姓名) as 姓名,sum(工资)
from table
不会出错  也可以 但是不推荐

为什么这个写法不推荐?

#6


谢了.
select max(姓名) as 姓名,sum(工资)
from table
不会出错  也可以 但是不推荐

为什么这个写法不推荐?

#7


不必考虑NULL值的问题,聚集函数一般都会忽略掉

#8


字符串連接的時候注意不要出現NULL就可以了。加法中會忽略的。

#9


写法严谨点而已

#10


不必考虑NULL值的问题,聚集函数一般都会忽略掉
=================
谢谢,是不是让系统去忽略这个问题,代码有点不严谨呀?可是手工写sum(isnull(field,0)),每个都这么写要多写多少代码呀?
继续请教.

#11


如果可能有空值,就必须使用,否则任何值加NULL,都为NULL。