实测MySQL 查询结果保留两位小数函数的区别汇总

MySQL查询结果保留两位小数常用的几个函数的区别,使用场景。

1、随机函数format(x,d)

2、格式化小数函数format(x,d)

例如:

select format(23456.789,2); 
# 或
select formate(salary,2);  

输出:23,456.79  

实测:

原表部分信息:

SQL语句:

SELECT
	客户,
	format(
		sum(
			结算金额
		) / 10000,
		2
	) AS 总结算金额
FROM
    销售表2019
GROUP BY
	客户
ORDER BY
	总结算金额 DESC

结果:

总结:结果成功保留两位小数,但是排序不起作用了!

查看文档:Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part.整数部分超过三位的时候以逗号分割,并且返回的结果是string类型的。

3、截取函数truncate(x,d)

select truncate(23456.789,2);  
# 或
select truncate(salary,2); 

输出:23456.78  

truncate()函数会将小数部分2位以后的值直接舍去。

 

4、类型转换函数convert(expr,type)

select convert(23456.789,decimal(10,2));  
#或
select convert(salary,decimal(10,2));  

输出:23456.79  

convert()函数会对小数部分进行四舍五入操作,解释一下decimal(10,2),它表示最终得到的结果整数部分位数加上小数部分位数小于等于10,小数部分位数2。

实操中发现Navicat自动将语句转换成了: 

cast((sum(结算金额) / 10000) as decimal(10,2))

原表部分信息:

完整代码:

SELECT
	客户,
	cast(
		(
			sum(
				结算金额
			) / 10000
		) AS DECIMAL (10, 2)
	) AS 总结算金额
FROM
	销售表2019
GROUP BY
	客户
ORDER BY
	总结算金额
DESC

输出结果:

总结:结果成功保留两位小数,排序也正常!

5.CAST函数语法规则是:Cast(字段名 as 转换的类型 )

其中类型可以为:

CHAR[(N)] 字符型 
DATE 日期型
DATETIME 日期和时间型
DECIMAL float型
SIGNED int
TIME 时间型

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值