Oracle 資料類型完整指南:22 種核心類型詳解
掌握資料類型是資料庫設計、效能調校與避坑的基礎。本文系統整理 Oracle 22 種核心資料類型的定義、儲存特性、長度限制、適用場景與建表範例。
字元類型
| 類型 | 最大長度 | 特性 | 適用場景 |
| CHAR(n) | 2000 bytes | 固定長度,不足右補空格 | 固定長度代碼(如國家代碼、Y/N 旗標) |
| VARCHAR2(n) | 4000 bytes | 可變長度,不補空格 | 一般文字資料,首選類型 |
| NCHAR(n) | 2000 bytes | Unicode 固定長度 | 多語系固定長度欄位 |
| NVARCHAR2(n) | 4000 bytes | Unicode 可變長度 | 多語系可變長度欄位 |
字元語意:VARCHAR2(20 CHAR) 指定字元數而非位元組,支援 UTF8/AL32UTF8 多位元組字元集。
數值類型
| 類型 | 精度/範圍 | 儲存特性 | 範例 |
| NUMBER(p,s) | p=1~38, s=-84~127 | 可變長度科學標記法,1 byte 指數 + 最多 20 bytes 尾數 | NUMBER(5,2) 存 123.45 |
| BINARY_FLOAT | 32-bit IEEE 754 | 5 bytes,單精度浮點數 | 科學計算、近似值 |
| BINARY_DOUBLE | 64-bit IEEE 754 | 9 bytes,雙精度浮點數 | 高精度科學計算 |
日期時間類型
| 類型 | 精度 | 時區支援 | 備註 |
| DATE | 秒 | 無 | 7 bytes,含世紀、年、月、日、時、分、秒 |
| TIMESTAMP | 奈秒 (9 位) | 無 | 9i+,精度可調 |
| TIMESTAMP WITH TIME ZONE | 奈秒 | 有 | 含時區位移 |
| TIMESTAMP WITH LOCAL TIME ZONE | 奈秒 | 資料庫標準化 | 查詢時自動轉為 Session 時區 |
| INTERVAL YEAR TO MONTH | 月 | — | 5 bytes,期間運算 |
| INTERVAL DAY TO SECOND | 奈秒 | — | 11 bytes,精細期間運算 |
大物件 (LOB) 類型
| 類型 | 最大容量 | 用途 | 備註 |
| CLOB | (4GB-1) * DB_BLOCK_SIZE | 字元大物件 | 取代 LONG |
| NCLOB | 同 CLOB | Unicode 字元大物件 | NLS 字元集 |
| BLOB | 同 CLOB | 二進位大物件 | 圖片、影音、文件 |
| BFILE | 4GB | 外部檔案定位器 | 唯讀,檔案在 OS 層 |
原始與特殊類型
RAW(n) / LONG RAW:二進位資料,上限 2000/2GB,建議改用 BLOB。
ROWID / UROWID:物理/邏輯列地址,10/4000 bytes。
已棄用/相容性類型
LONG / LONG RAW:單表僅一欄、不支援索引、函數、WHERE 條件受限;請遷移至 LOB。
VARCHAR:同 VARCHAR2,保留為相容性,勿使用。
資料壓縮與儲存優化
CREATE TABLE ... COMPRESS / ALTER TABLE ... MOVE COMPRESS:僅限直載作業 (CTAS、Direct-path INSERT、SQL*Loader Direct) 有效;UPDATE 不重新壓縮。
- 混合使用
NULL 欄位置於表尾,Oracle 以位圖壓縮連續 NULL,節省空間。
選型口訣
- 文字優先
VARCHAR2,固定長度才用 CHAR。
- 多語系用
NVARCHAR2,指定 CHAR 語意。
- 金額、精確計算用
NUMBER(p,s);科學近似值用 BINARY_DOUBLE。
- 日期時間新系統統一用
TIMESTAMP WITH LOCAL TIME ZONE。
- 大文本/二進位一律用
CLOB/BLOB,拒絕 LONG。