赞
踩
在今天的工作中,我遭遇了这样一个问题:数据库内的金额是以分为单位予以存储的,然而却需要将其转换为以元为单位,并经过适当处理之后进行展示。由于封装的 SQL 查询器会把返回的结果都默认转化成字符串,倘若采用 Python 来处理,就会略显繁杂。想到可以在sql中进行处理
MySQL 提供了多种多样的数值格式化函数,通过对 SQL 查询语句加以修改,运用 FORMAT
成功地解决了这一问题。
FORMAT
函数FORMAT
函数主要用于将数字格式化为附带千分位分隔符以及指定小数位的字符串。
ROUND
函数ROUND
函数旨在对数字执行四舍五入操作,并且能够指定小数的位数。
TRUNCATE
函数TRUNCATE
函数用于直接将数字截断至指定的小数位数。
下面通过具体的代码示例来瞧瞧它们的实际成效。
select 9999999/100 as a,
format(9999999/100,2) as b,
round(9999999/100,2) as c,
truncate(9999999/100,2) as d
limit 1;
select 9999999/100 as a,
format(9999999/100,1) as b,
round(9999999/100) as c,
truncate(9999999/100,1) as d
limit 1;
其结果分别为:
99999.9900,"99,999.99",99999.99,99999.99
99999.9900,"100,000.0",100000,99999.9
在第一个结果当中,尽管数值本质相同,然而呈现的格式却大相径庭。a 列属于未经处理的原始数值,b 列通过 FORMAT
函数增添了千分位分隔符以及精确的小数位,c 列借助 ROUND
函数进行了四舍五入并精确到两位小数,d 列则由 TRUNCATE
函数直接截断到指定的两位小数。
在第二个结果里,b 列的 FORMAT
函数将小数部分四舍五入保留一位小数并添加千分位分隔符,致使数值的整体表现有所差别。c 列的 ROUND
函数在未指定小数位时实施了默认的四舍五入操作,从而让结果变为整数。d 列的 TRUNCATE
函数截断到一位小数,和其他函数的处理结果存在显著差异。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。