Oracle 資料庫支援豐富的資料型別,正確選型關乎儲存效能、資料完整性與應用相容性。本文整理核心型別規格、長度限制、預設值與適用場景。
字元型別
| 型別 | 說明 | 最大長度 | 預設/備註 |
| CHAR(size) | 固定長度,不足右補空格 | 2000 位元組 | size=1 位元組 |
| VARCHAR2(size) | 變動長度 | 4000 位元組 | 必須指定 size |
| NCHAR(size) | Unicode 固定長度 | 2000 位元組 | 依字元集定義字元/位元組 |
| NVARCHAR2(size) | Unicode 變動長度 | 4000 位元組 | 依字元集定義字元/位元組 |
| LONG | 舊式大文本,僅單欄 | 2GB | 不建議新系統使用 |
數值型別
| 型別 | 說明 | 精度/範圍 | 備註 |
| NUMBER(p,s) | 標準數值,p=總位數, s=小數位 | p≤38, s∈[-84,127] | 最通用,含整數、浮點 |
| INTEGER / INT | NUMBER(38,0) 同義詞 | 整數 | ANSI 相容 |
| FLOAT(p) | 二進制浮點 | p≤126 (二進制位數) | NUMBER 子型別 |
| BINARY_FLOAT | 32-bit IEEE 754 | ~3.4E38 | 10g+ 原生 |
| BINARY_DOUBLE | 64-bit IEEE 754 | ~1.7E308 | 10g+ 原生 |
日期時間型別
| 型別 | 儲存大小 | 範圍/精度 | 備註 |
| DATE | 7 位元組 | 公元前 4712/01/01 ~ 公元 9999/12/31, 秒 | 含年月日時分秒 |
| TIMESTAMP(p) | 7-11 位元組 | 秒精度至 0.000000001 秒 (p=9) | 9i+ 支援小數秒 |
| TIMESTAMP(p) WITH TIME ZONE | 13 位元組 | 含時區位移 | 跨時區應用必備 |
| TIMESTAMP(p) WITH LOCAL TIME ZONE | 7-11 位元組 | 自動轉換至 Session 時區 | 資料庫不存時區 |
| INTERVAL YEAR TO MONTH | 5 位元組 | 年月間隔 | |
| INTERVAL DAY TO SECOND | 11 位元組 | 日時分秒間隔 | |
大物件 (LOB) 型別
| 型別 | 說明 | 最大長度 | 備註 |
| BLOB | 二進位大物件 | 4GB | 圖片、文件、加密資料 |
| CLOB | 單位元組字元大物件 | 4GB | 長文本、日誌、XML |
| NCLOB | Unicode 字元大物件 | 4GB | 多語言長文本 |
| BFILE | 外部檔案定位器 | 4GB (OS 限制) | 唯讀、資料在 OS 檔案系統 |
二進位型別
| 型別 | 說明 | 最大長度 |
| RAW(size) | 變動長度二進位 | 2000 位元組 |
| LONG RAW | 舊式大二進位 | 2GB |
選型建議
- 字串優先
VARCHAR2,固定長度代碼 (如國別碼) 用 CHAR。
- 多語言系統全面採用
NVARCHAR2/NCLOB。
- 金額、精確計算務必用
NUMBER(p,s),避免浮點誤差。
- 新系統日期時間統一用
TIMESTAMP WITH TIME ZONE。
LONG/LONG RAW 已棄用,改用 LOB。