Mysql整数运算NULL值处理注意点

 

CleverCode最近在导出报表的时候,在整数做减法的时候,发现整数减去null得到是null。这是一个细节问题,希望大家以后注意。

 

1 表中的数据

total,used都是整形,允许为空。

 

2 有问题的运算语句

减法问题
select 
	id,
	total,
	used,
	(total - used) as have 
from test_table
 
 

 

 

3 正确的写法

 

使用ifnull,来处理null。
select 
	id,
	ifnull(total,0) as total,
	ifnull(used,0) as used,
	(ifnull(total,0) - ifnull(used,0)) as have 
from test_table

 

 

 

 

4 建议

 
1) 在设计表的时候,如果发现这列是需要运算的列,建议设置默认值,比如0;
2) 在整形列的运算的时候,不管是加,减,乘,除等。都需要使用ifnull,对列进行处理。否则报表数据就会错。
 
这些都是细节小问题,大家一看就能明白,希望大家在细节上注意,否则一份财务表报计算出错了,那后果是很严重的!
 
 

版权声明:

1)原创作品,出自"CleverCode的博客",请勿转载,否则追究版权法律责任。
2)原创地址: http://blog.csdn.net/clevercode/article/details/47035975
3)分类地址(Mysql数据库总结): http://blog.csdn.net/clevercode/article/category/3262205(博客持续增加,关注请收藏)
4)欢迎大家关注我博客更多的精彩内容: http://blog.csdn.net/CleverCode
 

 

 

 

 

 

 

4 建议

 

技术交流

CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值