事情经过
早上过来,老大找到我说,需要加一个功能,需要在用户管理界面上加一个用户这段时间消费的总金额。虽然很简单,但是获取到用户消费总金额的话需要和订单表进行关联,看着数据库订单表已经有10w+的数据,索性就先不加了,就先使用sql语句查询出每个用户消费金额导出到excel中就行了。sql写起来很简单,在执行完的时候,消费总金额字段有多个小数,按理来说保留两位即可,随即使用mysql中保留小数的方法进行修改、执行、导出excel,进行交工。
为了后期在使用过程中方便使用,加上下午时间充裕,特此记录一下Mysql中常用的保留小数的方法!!!
回归正题
前戏
来来来,先看下我的sql与执行之后的结果
SELECT user_id,SUM(actual_amount) FROM t_order GROUP BY user_id
解决方式
解决的话,这块就直接使用小例子进行处理了,比如:设置一个数字为1.45698。在下列使用中,会在函数中使用n和d,n对应的是数字,也就是我们设置的1.45698,d对应的保留的小数位数,此处使用2。
一、使用 ROUND 函数
SELECT ROUND(1.45698, 2);
执行结果:
通过执行结果,可看出,ROUND(n,d)是一个四舍五入的函数,会根据x对应的位数进行四舍五入。
二、使用 FORMAT 函数
SELECT FORMAT(1.45698, 2);
执行结果:
通过执行结果,可看出,FORMAT(n,d)是一个四舍五入的函数,会根据x对应的位数进行四舍五入。
三、使用 CAST 函数
SELECT CAST(1.45698 as DECIMAL(10,2));
执行结果:
通过执行结果,可看出,CAST(n as DECIMAL(10,d)) 会把d转成DECIMAL类型的数据,并根据x对应的位数进行四舍五入。
四、使用 CONVERT 函数
SELECT CONVERT(1.45698,DECIMAL(10,2));
执行结果:
通过执行结果,可看出,CONVERT(n as DECIMAL(10,d)) 会把d转成DECIMAL类型的数据,并根据x对应的位数进行四舍五入。
五、使用 TRUNCATE 函数
SELECT TRUNCATE(1.45698, 2);
执行结果:
通过执行结果,可看出,TRUNCATE(n,d)是一个光舍不入的函数,会根据x对应的位数进行舍去,和x对应位数的数字是否大于不大于5没有关系。
总结
浅浅的记录一下在Mysql中,常用的一些保留小数的方法,具体的使用的话还需根据实际情况进行使用,或者说自己喜欢用那种方式就用那种方式。
如果发现其他方法的话,就会进行添加。
作者:熊猫片沃子
链接:https://juejin.cn