欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【sql】MySQL 中的数值格式化函数:FORMAT、ROUND 和 TRUNCATE

【sql】MySQL 中的数值格式化函数:FORMAT、ROUND 和 TRUNCATE

2024/10/25 14:33:39 来源:https://blog.csdn.net/longforone/article/details/141217661  浏览:    关键词:【sql】MySQL 中的数值格式化函数:FORMAT、ROUND 和 TRUNCATE

问题背景

在今天的工作中,我遭遇了这样一个问题:数据库内的金额是以分为单位予以存储的,然而却需要将其转换为以元为单位,并经过适当处理之后进行展示。由于封装的 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 函数截断到一位小数,和其他函数的处理结果存在显著差异。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com