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

Oracle TO_CHAR 函數深度解析:數值與日期格式化完全指南

     編輯:Oracle 資料庫基礎

函數語法

TO_CHAR(n [, fmt [, 'nlsparam']])
  • n:數值或日期。
  • fmt:格式模板字串。
  • nlsparam:指定小數點、千分位、貨幣符號等 NLS 參數。

數值格式化實戰

基本行為

TO_CHAR(1.0123)      --> '1.0123'
TO_CHAR(123)         --> '123'
TO_CHAR(0.123)       --> '.123'   -- 預設不補前導 0

常用格式元素

元素說明範例
9數字位數(前導空白)TO_CHAR(123, '9999') → ' 123'
0數字位數(前導 0)TO_CHAR(123, '0000') → '0123'
.小數點TO_CHAR(123.45, '999.99') → ' 123.45'
G千分位分隔符(依 NLS)TO_CHAR(12345, '99G999') → ' 12,345'
L本地貨幣符號TO_CHAR(123, 'L999') → ' $123'
C國際貨幣符號TO_CHAR(123, 'C999') → ' USD123'
FM移除前後空白(Format Mode)TO_CHAR(123, 'FM999') → '123'

實戰需求:去空白、小數位最少 2 位、最多 4 位、四捨五入

-- 1      --> '1.00'
-- 1.1    --> '1.10'
-- 1.12   --> '1.12'
-- 1.1234 --> '1.1234'
-- 1.12345--> '1.1235' (四捨五入)

SELECT TO_CHAR(123.0233, 'FM9999999.0099') FROM DUAL;
-- 結果:'123.0233'

FM 移除空白;00 強制保留 2 位小數;99 允許最多再增加 2 位(共 4 位),第 5 位自動四捨五入。

日期格式化速查

格式含義範例輸出
YYYY4 位年份2024
MM2 位月份01
DD2 位日期15
HH2424 小時制14
MI分鐘30
SS秒59
DAY星期名稱MONDAY

常用組合

TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')  --> 2024-01-15 14:30:59
TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"')   --> 2024年01月15日

NLS 參數客製化範例

TO_CHAR(17145, 'L099G999', 'NLS_NUMERIC_CHARACTERS=".," NLS_CURRENCY="NT$"')
-- 結果:NT$017,145

常見坑點提醒

  • MM 是月份,MI 才是分鐘 —— 切勿混淆。
  • 格式字串長度不足會導致輸出 ########(如 TO_CHAR(100.12, '0.999'))。
  • 預設輸出含前導空白,建議習慣加 FM。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved