MySQL查询如何去除.00小数位,保留非.00的小数位?
实现MySQL数值格式调整:去除.00保留其他小数位
当然可以实现这个需求!在MySQL里有几种简洁的方式来处理这种数值格式调整,我给你分享两个常用的方案:
方法一:基于数值判断的CASE表达式
这个方法会先判断数值的小数部分是否为0,再决定输出格式,返回的结果是数值类型,适合后续还要做数值计算的场景。
核心思路是用MOD()函数获取数值除以1的余数(也就是小数部分),如果余数为0,就把数值转成整数;否则保留原数值。
示例代码:
SELECT CASE WHEN MOD(your_column, 1) = 0 THEN CAST(your_column AS UNSIGNED) ELSE your_column END AS formatted_value FROM your_table;
举个例子:当your_column是3.00时,MOD(3.00,1)返回0,会被转成整数3;当值是2.56时,余数是0.56,就直接返回2.56。
方法二:字符串截断法
如果你的场景更关注显示格式,不需要返回数值类型,可以用字符串处理函数直接去掉末尾的.00,操作更直观。
示例代码:
SELECT TRIM(TRAILING '.00' FROM CAST(your_column AS CHAR)) AS formatted_value FROM your_table;
这个逻辑是先把数值转成字符串,再用TRIM(TRAILING '.00' ...)去掉末尾的.00。比如3.00转成字符串是'3.00',截断后变成'3';2.56转成字符串是'2.56',没有.00结尾,所以保持不变。
小提示
如果你的字段是FLOAT类型,要注意浮点精度问题,可能会出现类似3.0000001的情况导致判断失误,建议先通过ROUND(your_column, 2)保留两位小数后再处理,避免精度干扰。
内容的提问来源于stack exchange,提问作者Anish Joseph
相关产品推荐
相关产品推荐

