問題:`CAST(t01 AS VARCHAR(10))` 導致:
1. `0.23` → `.23%` (少前導零)
2. `-1.5` → `1.5%` (少負號)
-- 保留前導零、負號、兩位小數
SELECT TO_CHAR(t01, 'FM999999990.00') || '%' AS t01_new
FROM TEST;
-- 或 VARCHAR_FORMAT (DB2 9.7+)
SELECT VARCHAR_FORMAT(t01, '999999990.00') || '%' AS t01_new
FROM TEST;
| 符號 | 含義 |
|---|---|
| `9` | 數字位 (不足不補零) |
| `0` | 數字位 (不足補零) → 關鍵:個位數前用 `0` 強制前導零 |
| `FM` | Fill Mode:移除前後空白、前導零 (若不想要前導零) |
| `S` | 正負號 (前置) |
| `MI` | 負號後置 |
| `.` | 小數點 |
VALUES TO_CHAR(0.23, 'FM999999990.00'); -- '0.23'
VALUES TO_CHAR(-1.5, 'FM999999990.00'); -- '-1.50'
VALUES TO_CHAR(1234.5, 'FM999999990.00'); -- '1234.50'
SELECT TO_CHAR(DECFLOAT(t01), 'FM999999990.00') || '%' FROM TEST;
拋棄 `CAST`,改用 `TO_CHAR`/`VARCHAR_FORMAT` 精確控制前導零、負號、小數位,即可完美解決 DB2 小數格式化顯示問題。