MySQL 对查询的值四舍五入保留两位小数
标签MySQL、数值处理、ROUND、金额计算、SQL优化、财务统计前言开发财务、充值、消费、余额相关业务时经常遇到金额展示需求数据库原始小数位数较多前端需要统一保留两位小数展示。很多同学习惯把原始数值查询出来在 Python / Java 代码里做四舍五入处理。实际上 MySQL 原生提供数值函数可以直接在SQL层面完成四舍五入。本文重点讲解ROUND()函数区分容易混淆的TRUNCATE()、FORMAT()同时梳理财务场景踩坑点、NULL空值兼容方案给出现成可直接复制的业务模板。一、核心函数ROUND() 四舍五入语法ROUND(数值,保留小数位数)规则四舍五入返回类型数值类型可以继续参与加减运算基础示例SELECTROUND(123.456,2);-- 123.46SELECTROUND(123.454,2);-- 123.45SELECTROUND(100,2);-- 100.00结合聚合函数 SUM()业务最常用统计充值、余额、消费金额场景-- 当日充值总额求和后四舍五入保留2位SELECTROUND(SUM(money),2)ASday_rechargeFROMsys_recharge_logWHEREcreate_timeCURDATE()ANDcreate_timeCURDATE()INTERVAL1DAY;二、重要配套兼容NULL空值 IFNULL一个高频坑当查询没有匹配数据时SUM()结果为NULLROUND(NULL,2)依旧返回NULL。程序如果直接使用会出现空值报错。解决方案IFNULL()兜底不存在数据时返回 0.00。标准生产写法SELECTIFNULL(ROUND(SUM(money),2),0.00)ASday_rechargeFROMsys_recharge_logWHEREcreate_timeCURDATE()ANDcreate_timeCURDATE()INTERVAL1DAY;逻辑说明先执行 SUM 求和求和结果传入ROUND四舍五入如果整体结果为NULL替换为 0.00三、容易混淆的两个函数不要用错1. TRUNCATE() 直接截断不四舍五入SELECTTRUNCATE(123.459,2);-- 123.45适用场景只想要舍弃后面小数、不进位财务金额统计严禁使用会造成金额误差。2. FORMAT() 格式化谨慎使用SELECTFORMAT(IFNULL(ROUND(SUM(money),2),0),2);特性自动增加千分位逗号1,234.56返回字符串类型⚠️重大风险拿到结果后如果继续做数值加减运算极易引发类型异常只适合直接前端展示不适合后续参与计算。总结区分✅ 金额统计、后续还要运算ROUND IFNULL❌ 财务计算不要用 TRUNCATE❌ 需要二次运算不要使用 FORMAT四、实战多字段横向汇总场景仪表盘统计多条金额指标一次性统一处理小数SELECTIFNULL(ROUND(SUM(CASEWHENtype1THENmoneyELSE0END),2),0.00)ASmoney1,IFNULL(ROUND(SUM(CASEWHENtype2THENmoneyELSE0END),2),0.00)ASmoney2,IFNULL(ROUND(SUM(price),2),0.00)ASconsumeFROMsys_balanceWHEREexpire_timeNOW()ANDstatus1ANDuser_idxxx;五、两种实现方案对比SQL处理 VS 应用代码处理方案ASQL内部 ROUND 处理推荐优点统一规则前后端不需要重复维护保留小数逻辑减少应用层判空、类型转换代码多条统计汇总时代码更简洁。缺点复杂计算逻辑全部压在数据库极端大量并发场景需要评估压力。方案B原始数值查出Python/Java代码四舍五入优点灵活可以针对不同场景切换保留位数缺点每个接口都要重复写格式化逻辑容易漏写多人开发容易出现标准不统一有的四舍五入、有的直接截断。建议规范单纯展示类报表、后台统计页面优先SQL层统一ROUND。六、高频开发踩坑清单坑1函数顺序写反❌ 错误写法ROUND(IFNULL(SUM(money),0.00),2)逻辑没问题但推荐下面可读性更强顺序✅ 推荐顺序IFNULL(ROUND(SUM(money),2),0.00)坑2忘记处理NULL程序拿到None没有业务数据时 SUM 返回 NULL前端展示出现空白。务必搭配 IFNULL。坑3使用FORMAT接收后继续运算# 危险FORMAT返回带逗号的字符串转float报错row[day_recharge]1,200.50float(row[day_recharge])# 转换异常坑4金额字段使用float存储浮点类型本身存在精度丢失最佳实践金额使用DECIMAL(18,2)存储从根源避免精度问题。七、编码规范模板直接复制使用单条金额统计标准模板SELECTIFNULL(ROUND(SUM(money),2),0.00)ASnumFROMsys_recharge_logWHEREcreate_timeCURDATE()ANDcreate_timeCURDATE()INTERVAL1DAYANDtype1;分组统计场景SELECTtype,IFNULL(ROUND(SUM(money),2),0.00)AStotal_moneyFROMsys_balanceWHEREstatus1GROUPBYtype;八、全文总结四舍五入优先使用 ROUND(数值,2)返回数值支持后续运算无匹配数据会产生NULL固定搭配IFNULL(...,0.00)兜底TRUNCATE 截断不进位财务业务禁止随意使用FORMAT生成带千分位字符串仅用于直接展示不要参与数值计算报表类金额统计建议在SQL层统一处理小数规则避免应用代码各处重复格式化存储金额尽量使用 DECIMAL 类型规避浮点数精度丢失隐患。财务数据对精度敏感统一SQL层使用ROUND规范处理能极大减少前后端因小数保留规则不一致产生的对账问题。

相关新闻

3步彻底卸载Windows Edge浏览器:专业PowerShell脚本工具EdgeRemover使用指南

3步彻底卸载Windows Edge浏览器:专业PowerShell脚本工具EdgeRemover使用指南

3步彻底卸载Windows Edge浏览器:专业PowerShell脚本工具EdgeRemover使用指南 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/…

2026/10/12 23:17:43 阅读更多 →
3分钟解锁Windows与iPhone无缝传输:AirDropPlus终极指南

3分钟解锁Windows与iPhone无缝传输:AirDropPlus终极指南

3分钟解锁Windows与iPhone无缝传输:AirDropPlus终极指南 【免费下载链接】AirDropPlus Effortless file transfer and clipboard sync between Windows and iOS — powered by Python and Apple Shortcuts. 项目地址: https://gitcode.com/gh_mirrors/ai/AirDropP…

2026/9/25 20:04:01 阅读更多 →
大数据转大模型:从一次踩坑讲到改进

大数据转大模型:从一次踩坑讲到改进

聊《一个大数据项目改成 AI 流程后,最难的部分完全变了》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要做大数据转大模型(LLM)工程这几年,我见过太多人把精力全砸…

2026/10/11 0:10:19 阅读更多 →

最新新闻

基于React Native鸿蒙的智能调度分配模块设计与实践

基于React Native鸿蒙的智能调度分配模块设计与实践

做服务调度类项目,最让人头大的从来不是页面能做得有多花哨,而是“这件事到底该派给谁、怎么快速判断那个人现在真能用”这一连串业务规则背后的逻辑。最近我负责了一个基于React Native鸿蒙跨平台实现的调度分配模块,核心需求很明确&#xf…

2026/10/15 22:10:40 阅读更多 →
临床小讲课高效备:用WorkBuddy快速生成主动脉夹层PPT

临床小讲课高效备:用WorkBuddy快速生成主动脉夹层PPT

1. 临时被点名做小讲课,为什么我第一时间想到的不是自己硬肝在临床科室待过的人都懂,主任临时点名让你第二天晨会做个小讲课,那种感觉比夜班收三个急诊还刺激。尤其是讲主动脉夹层这种心血管急危重症,内容深、进展快、指南更新频繁…

2026/10/15 22:10:40 阅读更多 →
PMP第8章项目质量管理实战:从规划到控制的全流程指南

PMP第8章项目质量管理实战:从规划到控制的全流程指南

1. 质量管理不是“质检员的事”:从三个真实翻车场景说起很多人考完PMP之后,对第8章的记忆就只剩下“规划质量管理、管理质量、控制质量”这三个过程组名称。真到了项目上,要么把质量管理等同于测试团队的事,要么觉得“质量”是个软…

2026/10/15 22:10:40 阅读更多 →
PAT甲级1104:从暴力到O(N)公式,贡献法破解所有连续子段求和与精度坑

PAT甲级1104:从暴力到O(N)公式,贡献法破解所有连续子段求和与精度坑

如果你刷过 PAT 甲级题库,一定见过这道“智力题”味的题目:1104 Sum of Number Segments (20分)。题面只有一句话,意思就是给一串正数,求所有连续子段各自的和,再把所有和加起来。听起来是个人都会做,三层循…

2026/10/15 22:10:40 阅读更多 →
万能BIOS刷新工具实战:SPI Flash刷写与校验救砖全攻略

万能BIOS刷新工具实战:SPI Flash刷写与校验救砖全攻略

简介:一款面向主板BIOS升级场景的刷新工具,适用于需要修复启动故障、提升硬件兼容性或更新固件版本的电脑用户与运维人员。工具宣称“万能”,实际兼容性仍需按主板型号核对,但覆盖常见主板刷新需求。资源包共4个文件,包…

2026/10/15 22:10:40 阅读更多 →
Unity Profiler性能分析实战:从真机采集到GC优化完整指南

Unity Profiler性能分析实战:从真机采集到GC优化完整指南

1. 为什么每个Unity开发者都该把Profiler当日常工具做Unity这几年,我见过太多项目在编辑器里跑得飞起,一打包到真机就卡成幻灯片。帧率从90掉到22,发热烫手,玩家骂声一片,团队却找不到瓶颈在哪。这种场景几乎每个中大型…

2026/10/15 22:09:39 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →