2011-12-23 125 views
6

MySQL中是否有内置函数可以删除右侧的尾随零?MySQL删除尾随零

我有样,我想我的输出是这样的:

1.0 ==> 1 
1.50 ==> 1.5 
10.030 ==> 10.03 
0.50 ==> 0.5 
0.0 ==> 0 
+2

相似的问题:[在SQL Server中删除从十进制的尾随零](http://stackoverflow.com/questions/2938296/remove-trailing-zeros-from-decimal-in-sql-server),[删除0值在小数位](http://stackoverflow.com/questions/1831466/drop-0-value-in-decimal-places) – 2011-12-23 03:15:01

+0

可能重复的[删除随着长度变化十进制值的尾随零](http:// stackoverflow .com/questions/7968531/remove-trailing-zeros-in-decimal-value-with-changing-length) – joran 2014-02-24 22:01:49

回答

8

它使用这个解决我的问题:

(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 
+0

这不是最终重塑MySQL的内置字符串到数值类型的铸造吗? – 2015-01-31 02:17:39

+3

30将变成3.这是一个坏的和错误的答案,应该永远不会被接受!克里斯托弗麦高恩给出了正确的答案。 – Jannes 2015-11-11 08:25:16

8

最简单的方式远,只需加零!

例子:

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`; 
+2

'TRIM()+ 0'完美! – Mvorisek 2017-08-29 10:14:39

-1

我有一个SI在我无法修改代码或SQL查询的情况下发生类似问题,但我被允许修改数据库结构。所以我将列格式从DECIMAL更改为FLOAT,并解决了我的问题。

+1

这可能是一个危险的变化。 DECIMAL类型用于确切的值。 FLOAT类型用于近似值。 – 2014-06-20 20:33:43