SQL 小数位数处理

eg:_Table
列名:
id : 主键(自增)
name :姓名
year :年份
salary :当前年份工资
插入图片描述
当前 _Table 表 为名字为张三、李四、王五在2022年的年薪分别为100000、130000、150000;

保留两位或多位小数

eg:现要求出每个人平均每月的工资
sql : select name,(salary / 12) monthlySalary from _Table
结果如图:
列名:name :名称
monthlySalary :平均每月工资
在这里插入图片描述
数据库显示小数位置过于长,此处用省略号代替;

有当前数据可明显看出,数据库计算后结果小数位数过长,没有结果处理小数位数,基本不适用于所有的业务场景和需求,我们需要对计算结果进行处理,保留对应的小数位数

需要保留两位小数时:
sql : select name,Convert(decimal(18,2),(salary / 12)) monthlySalary from _Table
结果如图:
在这里插入图片描述
现在的结果可以看出来,进行过小数位数处理后已经适用于绝大多数业务场景和需求,但是还是有一些场景需要小数点后为零则不显示,如果这种情况还需要在进行下一步处理;

需要保留两位小数且小数点后为零不显示:
sql : select name,Convert(FLOAT,Convert(decimal(18,2),(salary / 12))) monthlySalary from _Table
结果如图:
在这里插入图片描述
当前结果可以明显的看到张三和李四的平均每月的工资已经保留两位小数,而且王五的工资本来应该为12500.00 但是现在经过处理后已经为 12500

总结

保留小数位数为两位或多位:
需要用到:Convert ( decimal ( int i , int j ) , ( decimal dec ) ) 此方法
其中的参数代表的意思
i : decimal 的长度
j : 当前查询的结果需要的小数位数(保留两位就是2,三位就是3 … …
dec :需要进行处理的数据(此数据可以用计算公式代替)

需要保留两位小数且小数点后为零不显示:
需要用到:Convert ( FLOAT , decimal dec ) 此方法
其中参数代表的意思为:
dec : 需要进行处理的数据(此处只需要是可计算数据均可以)

以上两个函数只是最基本的用法,在实际业务逻辑中可以互相嵌套使用,只要对应的参数满足条件即可。
此文为本人随笔,只有浅显说明,若有不足和错误,请评论或私信,虚心接受。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐