首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 格式化小數保留兩位小數的多種方法與比較

     編輯:MySQL 綜合教學

前言

在 MySQL 中處理數值格式化時,常見需求是將小數點後保留固定位數。本文將介紹三種常用函數 FORMAT()、TRUNCATE() 與 CONVERT() 的行為差異,並說明如何根據業務需求選擇最適合的方案。

1. FORMAT():格式化並四捨五入,但會加入千分位逗號

FORMAT(X, D) 會將數字 X 格式化為 '#,###,###.##' 形式,保留 D 位小數並四捨五入,回傳型別為字串。整數部分超過三位時會自動以逗號分隔。

SELECT FORMAT(12562.6655, 2);

結果: 12,562.67

官方文件說明:

Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part.

更多範例:

mysql> SELECT FORMAT(12332.123456, 4);  -- '12,332.1235'
mysql> SELECT FORMAT(12332.1, 4);     -- '12,332.1000'
mysql> SELECT FORMAT(12332.2, 0);     -- '12,332'

缺點: 回傳字串且包含千分位逗號,不適合直接用於數值運算或需無逗號格式的場景。

2. TRUNCATE():直接截斷,不四捨五入

TRUNCATE(X, D) 會直接捨去小數點後第 D+1 位及之後的數字,不進行四捨五入。

SELECT TRUNCATE(4545.1366, 2);

結果: 4545.13

缺點: 非四捨五入邏輯,可能不符合財務或統計需求。

3. CONVERT() / CAST():轉型為 DECIMAL 實現標準四捨五入

將數值轉型為 DECIMAL(精度, 小數位) 可達到標準四捨五入且無逗號的純數值結果。

SELECT CONVERT(4545.1366, DECIMAL(10,2));

結果: 4545.14

也可使用 CAST(4545.1366 AS DECIMAL(10,2)),效果相同。

優點: 回傳數值型別、無千分位逗號、標準四捨五入,最符合大多數業務預期。

總結比較表

函數四捨五入千分位逗號回傳型別適用場景
FORMAT()是有字串報表顯示、需逗號分隔的字串輸出
TRUNCATE()否(截斷)無數值需直接捨去尾數、不四捨五入的計算
CONVERT()/CAST()是無數值一般業務運算、儲存、需標準四捨五入的數值處理

建議

  • 若需純數值且四捨五入:優先使用 CAST(val AS DECIMAL(p,s)) 或 CONVERT(val, DECIMAL(p,s))。
  • 若需字串顯示且帶逗號:使用 FORMAT()。
  • 若需直接截斷不四捨五入:使用 TRUNCATE()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved