簡體   English   中英

MySQL 刪除尾隨零

[英]MySQL Remove Trailing Zero

MySQL 中是否有內置函數可以刪除右側的尾隨零?

我有樣本,我希望我的輸出是這樣的:

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

迄今為止最簡單的方法,只需添加零!

例子:

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

這是我的方法:

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

我在無法修改代碼或 SQL 查詢的情況下遇到了類似的問題,但我可以修改數據庫結構。 所以我將列格式從 DECIMAL 更改為 FLOAT 並解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM