摘要:CAST(your_column AS CHAR):将数值转为字符串,消除固定小数位格式。TRIM(TRAILING '0' FROM ...):去除字符串末尾的 0。TRIM(TRAILING '.' FROM ...):处理可能残留的小数点(如 5. →
在 MySQL 中去除小数点后多余的 0,并根据需求同时去除小数点(当结果为整数时),可通过以下方法实现:
SELECT CASE WHEN TRIM(TRAILING '.' FROM trimmed_value) = '' THEN '0' ELSE TRIM(TRAILING '.' FROM trimmed_value) END AS resultFROM ( SELECT TRIM(TRAILING '0' FROM CAST(your_column AS CHAR)) AS trimmed_value) AS subquery;效果说明:
123.4500 → 123.455.0000 → 50.0000 → 0100.0 → 100逻辑分析:
CAST(your_column AS CHAR):将数值转为字符串,消除固定小数位格式。TRIM(TRAILING '0' FROM ...):去除字符串末尾的 0。TRIM(TRAILING '.' FROM ...):处理可能残留的小数点(如 5. → 5)。CASE 语句:避免纯 0 值(如 0.0000)处理后变为空字符串。效果说明:
9.0000 → 97.5000 → 7.5逻辑解析:
0 + CAST(...):通过隐式转换将字符串数值转为浮点数,自动去除末尾的 0。CASE 语句:处理类似 9. 的中间结果,直接去除小数点。SELECT REGEXP_REPLACE( REGEXP_REPLACE(CAST(your_column AS CHAR), '0+$', ''), '\\.$', '' ) AS result;效果说明:
分两步正则匹配:先去除末尾的 0,再去除可能残留的小数点。-- 示例表结构CREATE TABLE test_data (value DECIMAL(18,4));INSERT INTO test_data VALUES (123.4500), (5.0000), (0.0000), (100.0);-- 执行查询SELECT original_value, CASE WHEN TRIM(TRAILING '.' FROM trimmed_value) = '' THEN '0' ELSE TRIM(TRAILING '.' FROM trimmed_value) END AS cleaned_valueFROM ( SELECT value AS original_value, TRIM(TRAILING '0' FROM CAST(value AS CHAR)) AS trimmed_value FROM test_data) AS subquery;输出结果:
+++| original_value | cleaned_value |+++| 123.4500 | 123.45 || 5.0000 | 5 || 0.0000 | 0 || 100.0 | 100 |+++来源:电脑技术汇
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!