2011-12-23 108 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