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

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇