【发布时间】:2012-01-26 13:34:08
【问题描述】:
MySQL 中是否有内置函数可以删除右侧的尾随零?
我有样本,我希望我的输出是这样的:
1.0 ==> 1
1.50 ==> 1.5
10.030 ==> 10.03
0.50 ==> 0.5
0.0 ==> 0
【问题讨论】:
MySQL 中是否有内置函数可以删除右侧的尾随零?
我有样本,我希望我的输出是这样的:
1.0 ==> 1
1.50 ==> 1.5
10.030 ==> 10.03
0.50 ==> 0.5
0.0 ==> 0
【问题讨论】:
它解决了我的问题:
(TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM setpoint)AS char)))) AS setpoint
示例:
mysql> SELECT testid, designationid, test, measure,
(TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM setpoint)AS char)))) AS setpoint,
(TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM tmin)AS char)))) AS tmin,
(TRIM(TRAILING '.' FROM(CAST(TRIM(TRAILING '0' FROM tmax)AS char)))) AS tmax,
FROM tests
【讨论】:
目前最简单的方法,只需加零!
例子:
SET
@yournumber1="1.0",
@yournumber2="1.50",
@yournumber3="10.030",
@yournumber4="0.50",
@yournumber5="0.0"
;
SELECT
(@yournumber1+0),
(@yournumber2+0),
(@yournumber3+0),
(@yournumber4+0),
(@yournumber5+0)
;
+------------------+------------------+------------------+------------------+------------------+
| (@yournumber1+0) | (@yournumber2+0) | (@yournumber3+0) | (@yournumber4+0) | (@yournumber5+0) |
+------------------+------------------+------------------+------------------+------------------+
| 1 | 1.5 | 10.03 | 0.5 | 0 |
+------------------+------------------+------------------+------------------+------------------+
1 row in set (0.00 sec)
如果您的值来自的列是 DECIMAL 或 NUMERIC 类型,则首先将其转换为字符串以确保发生转换...例如:
SELECT (CAST(`column_name` AS CHAR)+0) FROM `table_name`;
为了更短的方式,只需使用任何内置的字符串函数来进行转换:
SELECT TRIM(`column_name`)+0 FROM `table_name`;
【讨论】:
TRIM()+0 完美!
在我无法修改代码和 SQL 查询的情况下,我遇到了类似的问题,但我被允许修改数据库结构。所以我将列格式从 DECIMAL 更改为 FLOAT,它解决了我的问题。
【讨论】:
这是我的方法:
SELECT TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM `table`.`column`)) FROM table
【讨论】: