函數語法
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 位自動四捨五入。
日期格式化速查
| 格式 | 含義 | 範例輸出 |
| YYYY | 4 位年份 | 2024 |
| MM | 2 位月份 | 01 |
| DD | 2 位日期 | 15 |
| HH24 | 24 小時制 | 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。