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

MySQL 格式化小數位數:保留兩位小數的最佳實踐

     編輯:MySQL 資料庫相關知識

前言

在 MySQL 中處理數值顯示時,經常需要將小數格式化為固定位數(例如保留兩位小數)。MySQL 提供了 FORMAT()、TRUNCATE() 和 CONVERT() 等函數,但它們的行為各有差異。本文將詳細對比這些方法,幫助你選擇最適合的方案。

1. FORMAT() 函數:帶千分位分隔符的字串輸出

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

SELECT FORMAT(12562.6655, 2);
-- 結果:'12,562.67'

更多範例

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'       (D=0 時無小數點)
> ⚠️ **注意**:若不想要千分位逗號,FORMAT() 並不適合直接使用。

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

TRUNCATE(X, D) 會將數字 X 截斷到 D 位小數,**不進行四捨五入**,返回數值類型。

SELECT TRUNCATE(4545.1366, 2);
-- 結果:4545.13
> 此方法可避免逗號分隔,但若需四捨五入則不適用。

3. CONVERT() / CAST():精確四捨五入並保持數值類型

使用 CONVERT(value, DECIMAL(precision, scale)) 或 CAST(value AS DECIMAL(precision, scale)) 可將數值轉換為指定精度的 DECIMAL 類型,**會進行標準四捨五入**,且結果為數值類型,無逗號分隔。

SELECT CONVERT(4545.1366, DECIMAL(10,2));
-- 結果:4545.14  (四捨五入,無逗號,數值類型)

總結對比表

函數四捨五入千分位逗號返回類型適用場景
FORMAT()是有String報表顯示、需帶分隔符的字串輸出
TRUNCATE()否 (截斷)無數值需單純截斷小數位
CONVERT()/CAST()是無數值 (DECIMAL)計算、存儲、需標準四捨五入的數值處理

建議

  • **純數值運算或存儲**:優先使用 CAST(value AS DECIMAL(10,2)) 或 CONVERT(value, DECIMAL(10,2))。
  • **前端直接顯示且需千分位**:使用 FORMAT()。
  • **需截斷而非四捨五入**:使用 TRUNCATE()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved