首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 去除小數點後多餘 0:CAST 轉 DECIMAL 定標最簡單

     編輯:MySQL 資料庫相關知識

需求:2.12000 → 2.12、2.10000 → 2.1、2.00000 → 2,保留有效位數,去除尾部 0。

一行搞定

SELECT CAST(2.12000 AS DECIMAL(9,2));  -- 2.12
SELECT CAST(2.10000 AS DECIMAL(9,2));  -- 2.1
SELECT CAST(2.00000 AS DECIMAL(9,2));  -- 2

原理

  • DECIMAL(9,2) 表示「總共 9 位數字,小數點後 2 位」。
  • MySQL 在隱式/顯式轉換為定點數時,會自動去除小數點後無意義的尾部 0,並保留必要的精度位。
  • 若原值小數位超過定義精度,會四捨五入;未超過則保留原精度並去尾 0。

動態精度場景

若不確定保留幾位,可用字符串處理:

SELECT TRIM(TRAILING '0' FROM TRIM(TRAILING '.' FROM CAST(num AS CHAR)));

但業務上通常精度固定(如價格 2 位、匯率 4/6 位),直接 CAST(... AS DECIMAL(p,s)) 最清晰、性能最好、可建索引。

避坑

  1. FLOAT/DOUBLE 存儲本身不精確,轉 DECIMAL 前已有誤差,源頭務必用 DECIMAL 存儲。
  2. CAST 結果類型為 DECIMAL,應用層接收時注意類型映射(Java BigDecimal、Python Decimal、Go github.com/shopspring/decimal)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved