Oracle 資料類型定義了欄位可儲存的資料範圍、精度與儲存特性。本文整理常用類型的長度限制、適用場景與注意事項,供建模與開發快速查閱。
字元類型
| 類型 | 最大長度 | 特性 | 適用場景 |
| CHAR | 2,000 位元組 | 固定長度,不足右補空白 | 固定長度代碼(如 Y/N、狀態碼) |
| VARCHAR2 | 4,000 位元組 | 變長,實際長度儲存 | 一般字串(名稱、描述、JSON 片段) |
| VARCHAR | 4,000 位元組 | 同 VARCHAR2(保留關鍵字,未來可能異動) | 建議統一用 VARCHAR2 |
| NCHAR | 2,000 字元 | 固定長度 Unicode | 多語言固定長度代碼 |
| NVARCHAR2 | 4,000 字元 | 變長 Unicode | 多語言一般字串 |
| LONG | 2 GB | 舊型大物件,已棄用,限制多(不可索引、不可 WHERE、單表僅一欄) | 避免使用,改用 CLOB |
| CLOB | 4 GB | 字元大物件,支援隨機讀寫、索引、LOB 函數 | 長文本、日誌、XML/JSON 完整文件 |
| NCLOB | 4 GB | Unicode CLOB | 多語言長文本 |
數值類型
| 類型 | 精度/範圍 | 備註 |
| NUMBER | 1.0E-130 ~ 9.99E125 (38 位精度) | 通用數值型別,內部以變長科學記號儲存 |
| INTEGER / INT | NUMBER(38,0) | ANSI 相容別名 |
| SMALLINT | NUMBER(38,0) | ANSI 相容別名 |
| DECIMAL / NUMERIC | NUMBER(p,s) | ANSI 相容別名 |
| FLOAT | NUMBER(126 binary precision) | 二進制浮點數,精度以 bit 為單位 |
| BINARY_FLOAT | 32-bit IEEE 754 | 單精度浮點數(10g+) |
| BINARY_DOUBLE | 64-bit IEEE 754 | 雙精度浮點數(10g+) |
日期時間類型
| 類型 | 範圍/精度 | 備註 |
| DATE | 公元前 4712-01-01 ~ 公元 9999-12-31,秒精度 | 含年月日時分秒,無時區 |
| TIMESTAMP | 納秒精度,無時區 | 9i+,DEFAULT CURRENT_TIMESTAMP 可用 |
| TIMESTAMP WITH TIME ZONE | 含時區位移 | 跨時區應用必備 |
| TIMESTAMP WITH LOCAL TIME ZONE | 資料庫時區正規化儲存,查詢時轉換為 Session 時區 | 全球化系統推薦 |
| INTERVAL YEAR TO MONTH | 年月間隔 | |
| INTERVAL DAY TO SECOND | 天秒間隔(含納秒) | |
二進制與特殊類型
| 類型 | 最大長度 | 用途 |
| RAW | 2,000 位元組 | 原始位元組(加密雜湊、小型二進制) |
| LONG RAW | 2 GB | 舊型大二進制,已棄用,改用 BLOB |
| BLOB | 4 GB | 二進制大物件(圖片、文件、加密資料) |
| BFILE | 4 GB (檔案指標) | 唯讀外部檔案指標,資料存 OS 檔案系統 |
| ROWID | 10/18 位元組 | 物理行地址,隱藏欄位,SELECT ROWID FROM ... 可見 |
| UROWID | 4,000 位元組 | 通用 ROWID(支援索引組織表、外部表) |
選型建議速查
- 字串:預設 VARCHAR2,固定代碼用 CHAR,多語言用 NVARCHAR2。
- 長文本:CLOB,勿用 LONG。
- 數值:NUMBER 通用;科學計算大量浮點運算用 BINARY_DOUBLE。
- 日期:TIMESTAMP WITH LOCAL TIME ZONE 為現代應用首選。
- 二進制:BLOB 內部儲存,BFILE 外部檔案參考。