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

Oracle 保留兩位小數的 4 種方案與最佳實踐

     編輯:Oracle 資料庫相關知識

報表常需將數值格式化為固定兩位小數(如 1234.50、0.00),單純 ROUND(val,2) 會省略尾隨零,顯示不整齊。以下四種方案由簡到精,附優缺點對比。

方案對比表

方案語法範例優點缺點
1. TO_CHAR + FM TO_CHAR(ROUND(val,2), 'FM99999999999999.00') 格式化能力強 0 顯示為 .00 需額外 DECODE 處理;9 的位數不足顯示 #
2. CASE WHEN 邏輯判斷 手動檢查小數點位置補零 完全可控 程式碼冗長、效能較差
3. COLUMN FORMAT (SQL*Plus) COLUMN amount FORMAT 9999999999.99 互動式查詢最快 僅限 SQL*Plus Session,不適用應用程式
4. TRIM + TO_CHAR (推薦) TRIM(TO_CHAR(val, '99999999999999.99')) 通用、簡潔、自動去前導空白 0 仍顯示 .00 需 DECODE;格式位數需足夠

推薦通用寫法(含 0 值處理)

SELECT DECODE(salary, 0, '0.00',
       TRIM(TO_CHAR(salary, '99999999999999.99')))
FROM   employees;

或使用 FM 格式:

SELECT DECODE(salary, 0, '0.00',
       TO_CHAR(ROUND(salary,2), 'FM99999999999999.00'))
FROM   employees;

關鍵細節提醒

  • 格式模型中 9 的個數 ≥ 最大整數位數,否則溢位顯示 ########。
  • TRIM 只去除前導/尾隨空白,不影響數字本身。
  • 若需千分位分隔符,改用 '999G999G999D99' (NLS 相關)。

效能建議

格式化屬表達式計算,建議僅在最終輸出層(View/Report)執行,避免中間結果集重複轉換;大量資料可考慮在應用層格式化減輕資料庫 CPU。

掌握 TRIM(TO_CHAR(...)) + DECODE(0) 組合,滿足 95% 報表格式化需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved