DB2 提供豐富且強類型的內置數據類型體系,合理選型直接影響存儲效率、索引性能、應用邏輯簡潔度。本文按語義分類,詳細列舉每類型的存儲格式、取值範圍、精度規則、長度上限及典型適用場景,供建模與開發參考。
| 類型 | 別名 | 存儲 | 精度/範圍 | 適用場景 |
|---|---|---|---|---|
| SMALLINT | INT2 | 2 字節 | -32,768 ~ 32,767 (5 位) | 狀態碼、小範圍枚舉、標誌位 |
| INTEGER / INT | INT4 | 4 字節 | -2,147,483,648 ~ 2,147,483,647 (10 位) | 主鍵 ID、計數器、通用整數 |
| BIGINT | INT8 | 8 字節 | -9.22E18 ~ 9.22E18 (19 位) | 海量主鍵、時間戳毫秒數、大數計算 |
| DECIMAL(p,s) / NUMERIC(p,s) | DEC / NUM | 壓縮 BCD (~p/2 字節) | p ≤ 31, s ≤ p 範圍 ±(10^31-1) | 金額、匯率、精確科學計算 |
| REAL | FLOAT(24) | 4 字節 | ±1.175E-37 ~ ±3.402E+38 7 位有效數字 | 單精度科學計算、圖形坐標 |
| DOUBLE / DOUBLE PRECISION / FLOAT | FLOAT(53) | 8 字節 | ±2.225E-308 ~ ±1.797E+308 15-16 位有效數字 | 雙精度科學計算、機器學習特徵 |
提示:所有數值類型均帶符號;DECIMAL 存儲為壓縮十進制 (BCD 變體),避免二進制浮點誤差,金融業務強制使用。
| 類型 | 長度範圍 | 存儲特徵 | 典型用途 |
|---|---|---|---|
| CHAR(n) / CHARACTER(n) | 1 ~ 254 字節 (默認 1) | 定長,空白填充 | 固定長度代碼 (ISO 國別碼、貨幣代碼) |
| VARCHAR(n) / CHAR VARYING(n) | 1 ~ 32,672 字節 | 變長,2 字節長度前綴 | 通用變長文本 (姓名、地址、描述) |
| LONG VARCHAR | 1 ~ 32,700 字節 | 變長,兼容舊版 | 遷移兼容,新建議用 VARCHAR/CLOB |
| CLOB(n[K|M|G]) | 最大 2,147,483,647 字節 (2GB-1) | 大對象,獨立 LOB 空間 支持 INLINE LENGTH | 長文檔、日誌、JSON/XML 文檔 |
CLOB 長度單位:n (字節)、nK (n×1024)、nM (n×1,048,576)、nG (n×1,073,741,824)。
專為日文、中文、韓文等雙字節字符設計,長度單位為「雙字節字符」。
| 類型 | 長度範圍 | 對應單字節類型 |
|---|---|---|
| GRAPHIC(n) | 1 ~ 127 雙字節 | CHAR(n) |
| VARGRAPHIC(n) | 1 ~ 16,336 雙字節 | VARCHAR(n) |
| LONG VARGRAPHIC | 1 ~ 16,350 雙字節 | LONG VARCHAR |
| DBCLOB(n[K|M|G]) | 最大 1,073,741,823 雙字節 | CLOB |
| 類型 | 長度範圍 | 典型載荷 |
|---|---|---|
| BLOB(n[K|M|G]) | 最大 2,147,483,647 字節 | 圖片、音視頻、加密數據、序列化對象、用戶定義結構 |
BLOB 不進行字符集轉換,按原始字節存取,適合任意二進制負載。
| 類型 | 組成 | 範圍/精度 | 存儲長度 | 字符串表示示例 |
|---|---|---|---|---|
| DATE | 年(0001-9999)、月(1-12)、日(1-n) | 天級 | 4 字節 (內部) / 10 字節 (外部) | '2024-12-31' / '12/31/2024' |
| TIME | 時(0-24)、分(0-59)、秒(0-59) | 秒級 | 3 字節 / 8 字節 | '23:59:59' / '23.59.59' |
| TIMESTAMP | 年、月、日、時、分、秒、微秒(6位) | 微秒級 | 10 字節 / 26 字節 | '2024-12-31-23.59.59.123456' |
CURRENT DATE / CURRENT TIME / CURRENT TIMESTAMP / CURRENT TIMEZONEYEAR() MONTH() DAY() HOUR() MINUTE() SECOND() MICROSECOND()CURRENT DATE + 1 YEAR、CURRENT DATE + 3 YEARS + 2 MONTHS + 15 DAYSDAYS(CURRENT DATE) - DAYS('2024-01-01')DATE('2024-12-31')、TIMESTAMP('2024-12-31 23:59:59')、VARCHAR_FORMAT(TS, 'YYYY-MM-DD')TIMESTAMPDIFF(單位, CHAR(TS1 - TS2)),單位:1=微秒分數、2=秒、4=分、8=時、16=天、32=周、64=月、128=季、256=年。DECIMAL(p,s)合理的類型選型 = 存儲節省 30%+ + 索引加速 2x+ + 應用代碼簡化。建議在概念模型階段即完成類型映射,避免後期 ALTER TABLE 搬運數據。