NULL参加运算结果还是0 微软真她妈的恶心!

本文描述了在数据库操作中遇到的一项特殊问题:由于字段为空值导致总分计算出现异常的情况。工程师通过排查发现,是由于SQL语句中未妥善处理空值导致的,并给出了解决方案。

今天实施工程师截图过来说,有项总分为0,而分项却有值的. 分别是5 ,10, 10,0,0,19.8.总分为44.80呀

通过截图看了其他行数据加总是对的呀! 把字段名和该行的ID号记录下来,反向推回锁定一片代码

update A set Total=A+B+C+D+E+F;

sum(datediff(ms,stdate,endate)/count(*)*20

抽出这部分SQL 单独跑了下 发现对应的行和列 是空值. 那么就可以用Is NULL(X,0) 去替换

发现是enddate为空的比较多,从而导致所有运算步骤都有问题

sum(datediff(ms,stdate,isnull(enddate,getdate()))

既然空值参加运算会导致全部失效,不明白为何要这样设置呢? 如果遇到了NULL为何不忽视它呢?

要害得开放人员使用IS NULL(X,0) 去检查和判断 增加开放人员的工作量和公司调试时间!

微软真她妈的恶心!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值