型別對應為一對多,實際選型需視具體業務精度、長度、儲存空間而定。下表列出主要對應關係與關鍵注意事項。
| Oracle | DB2/400 | 注意事項 |
|---|---|---|
| DATE(含年月日時分秒) | DATE(僅年月日) TIME(時分秒) TIMESTAMP(日期時間) | Oracle DATE 需拆分對應: • 僅日期 → DB2 DATE • 僅時間 → DB2 TIME • 日期時間 → DB2 TIMESTAMP • 可用 TO_CHAR() 取字串分別匹配 |
| Oracle | DB2/400 | 條件/建議 |
|---|---|---|
| VARCHAR2(n), n ≤ 4000 | CHAR(n) / VARCHAR(n) | n ≤ 32766 時優先用 CHAR(定長)提升效能、節省空間;用 VARCHAR 時加 ALLOCATE 參數減少 I/O |
| LONG (≤ 2GB) | VARCHAR(n) / CLOB(n) | n ≤ 32K 用 CHAR/VARCHAR;32K < n ≤ 2GB 用 CLOB |
| CLOB (≤ 4GB) | CLOB(n) | n ≤ 2GB 用 CLOB(n) |
| Oracle | DB2/400 | 條件 |
|---|---|---|
| RAW / LONG RAW (≤ 255/2GB) | CHAR(n) FOR BIT DATA / VARCHAR(n) FOR BIT DATA / BLOB(n) | ≤ 32K 用 BIT DATA 類型;> 32K 用 BLOB |
| BLOB (≤ 4GB) | BLOB(n) | n ≤ 2GB 用 BLOB(n) |
| NCLOB (≤ 4GB) | DBCLOB(n) | n ≤ 2GB 用 DBCLOB(n/2) |
| Oracle | DB2/400 | 選型邏輯 |
|---|---|---|
| NUMBER(p) / NUMBER(p,s) | SMALLINT / INTEGER / BIGINT / DECIMAL(p,s) | • 整數:依範圍選 SMALLINT(2B)、INTEGER(4B)、BIGINT(8B) • 定點小數:DECIMAL(p,s) • 浮點/未指定精度:FLOAT(n)/REAL/DOUBLE |
| NUMBER(無精度,預設 38 位,佔 20 bytes) | 視實際用途決定 | 遷移前必須分析實際資料範圍,避免空間浪費或精度遺失 |
ROWID ↔ DB2 ROWID(40 bytes,無 CCSID、無 datafile/block/row 資訊)。DB2 建表時 ORDERNO ROWID 可自動生成唯一值。DATALINK。CCSID 935(簡體)或 937(繁體)支援中文輸入。TO_CHAR 格式字串與 DB2 格式一致。