兩個列若為 分區兼容,則相同值經過 DB2 內部分區哈希算法後,必然映射到同一分區號。這是實現表並置、高效 Join 的基石。
| 類別 | 規則說明 | 示例/備註 |
|---|---|---|
| 基本原則 | 相同基本數據類型必兼容 | INT ↔ INT |
| 數值類型 | 整數家族兼容 | BIGINT、SMALLINT、INTERGER 互兼容 |
| 浮點家族兼容 | REAL、FLOAT (DOUBLE) 互兼容 | |
| 字符類型 | 不同長度 CHAR/VARCHAR 兼容 | CHAR(10) ↔ VARCHAR(20);尾部空格被哈希忽略 |
| 圖形類型 | GRAPHIC ↔ VARGRAPHIC 兼容 | 雙字節字符集場景 |
| 時間類型 | DATE、TIME、TIMESTAMP 互不兼容,亦不兼容 CHAR | 內部存儲格式不同,切勿混用作分區鍵 |
| 大對象 | LOB、LONG VARCHAR、CLOB、BLOB、DBCLOB 不可作分區鍵 | 故無兼容性可言 |
| 用戶定義類型 (UDT) | 以源基本類型判定兼容性 | CREATE TYPE myint AS INTEGER → 兼容 INTEGER |
| 約束屬性 | NOT NULL、FOR BIT DATA 不影響兼容性 | 僅元數據屬性 |
| NULL 值處理 | 兼容類型間 NULL 處理完全一致 | 不兼容類型間可能不同 |
| 小數精度/標度 | 不同精度標度的 DECIMAL 兼容 | DECIMAL(10,2) ↔ DECIMAL(15,4) |
BIGINT 或固定長度 CHAR,避免 VARCHAR 變長帶來的隱式轉換風險。INTEGER (如 YYYYMMDD) 而非直接用 DATE。