【问题标题】:MySQL Remove Trailing ZeroMySQL 删除尾随零
【发布时间】: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 sql


【解决方案1】:

它解决了我的问题:

(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

【讨论】:

  • 这不是彻底改造了 MySQL 的内置字符串到数字类型转换的功能吗?
  • 30 将变为 3。这是一个错误的答案,不应该被接受! Christopher McGowan 给出了正确答案。
【解决方案2】:

目前最简单的方法,只需加零!

例子:

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 完美!
【解决方案3】:

在我无法修改代码和 SQL 查询的情况下,我遇到了类似的问题,但我被允许修改数据库结构。所以我将列格式从 DECIMAL 更改为 FLOAT,它解决了我的问题。

【讨论】:

  • 这可能是一个危险的变化。 DECIMAL 类型用于精确值。 FLOAT 类型用于近似值。
【解决方案4】:

这是我的方法:

SELECT TRIM(TRAILING '.' FROM TRIM(TRAILING '0' FROM `table`.`column`)) FROM table

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2019-02-03
    • 2012-07-01
    • 2012-07-02
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多