如何使用Cast或Round函数调整查询结果的数值显示格式?
数值格式转换:将0.00/0.05/0.10转为0/0.05/0.1
你的需求是去除末尾无意义的零和冗余小数点,单纯用ROUND函数无法直接实现(因为ROUND仅做四舍五入,没法动态适配不同的小数位数需求),需要结合类型转换或格式化函数处理,不同数据库的实现方式如下:
MySQL 实现
通过字符串处理去除末尾零和小数点:
SELECT TRIM(TRAILING '0' FROM TRIM(TRAILING '.' FROM CAST(your_column AS CHAR))) AS formatted_value FROM your_table;
如果你的数值仅固定为0.00、0.05、0.10这三个,也可以直接转成浮点数(不会有精度问题):
SELECT CAST(your_column AS FLOAT) AS formatted_value FROM your_table;
SQL Server 实现
用FORMAT函数的通用格式自动去除末尾零:
SELECT FORMAT(your_column, 'G') AS formatted_value FROM your_table;
或指定最多保留两位小数的格式:
SELECT FORMAT(your_column, '0.##') AS formatted_value FROM your_table;
PostgreSQL 实现
使用TO_CHAR配合FM修饰符去除末尾零和小数点:
SELECT TO_CHAR(your_column, 'FM999.99') AS formatted_value FROM your_table;
或用正则替换处理字符串形式的数值:
SELECT REGEXP_REPLACE(CAST(your_column AS TEXT), '\.?0*$', '') AS formatted_value FROM your_table;
关于ROUND函数的说明
ROUND仅用于四舍五入,比如ROUND(0.10, 1)得到0.1、ROUND(0.00, 0)得到0,但ROUND(0.05, 1)会得到0.1(不符合你的需求),所以单独用ROUND无法覆盖所有场景,不如直接用格式化函数高效。
内容的提问来源于stack exchange,提问作者Hamed Tamadon
相关产品推荐
相关产品推荐

