【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 函数截断到一位小数,和其他函数的处理结果存在显著差异。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星眺北海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值