MySQL查询结果保留两位小数常用的几个函数的区别,使用场景。
1、随机函数format(x,d)
2、格式化小数函数format(x,d)
例如:
selectformat(23456.789,2);# 或selectformate(salary,2);
输出:23,456.79
实测:
原表部分信息:
SQL语句:
SELECT客户,format(sum(结算金额) / 10000,2) AS 总结算金额FROM销售表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销售表GROUP BY客户ORDER BY总结算金额DESC
输出结果:
总结:结果成功保留两位小数,排序也正常!
5.CAST函数语法规则是:Cast(字段名 as 转换的类型 )
其中类型可以为:
CHAR[(N)] 字符型
DATE 日期型
DATETIME 日期和时间型
DECIMAL float型
SIGNED int
TIME 时间型