首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

Oracle 與 DB2 資料類型對應對照表與轉換說明

     編輯:DB2 教學

核心對應表 (Oracle → DB2/400 → DB2 UDB)

OracleDB2/400DB2 UDB注意事項
DATEDATE + TIMETIMESTAMPOracle DATE 含日期時間;DB2 分離 DATE/TIME;建議用 TIMESTAMP 對應。轉換可用 TO_CHAR 取字串再映射。
VARCHAR2(n), n≤4000CHAR(n) / VARCHAR(n)VARCHAR(n) / CHAR(n)n≤32766 用 CHAR/VARCHAR;定長 CHAR 效能較好。
LONGVARCHAR(n) / CLOB(n)VARCHAR(n) / CLOB(n)n≤32K 用 VARCHAR;32K~2GB 用 CLOB。
RAW / LONG RAWCHAR/VARCHAR FOR BIT DATA / BLOBCHAR/VARCHAR FOR BIT DATA / BLOB(n)n≤32K 用 FOR BIT DATA;≤2GB 用 BLOB;≤4GB 用 BLOB(n)。
BLOBBLOB(n)BLOB(n)Oracle 4GB → DB2 2GB (V8 以前);V9+ 支援較大。
CLOBCLOB(n)CLOB(n)同上容量差異。
NCLOBDBCLOB(n)DBCLOB(n)DB2 DBCLOB 雙位元組,長度單位為雙位元組字元數。
NUMBER(p) / NUMBER(p,s)SMALLINT/INTEGER/BIGINT / DECIMAL(p,s)SMALLINT/INTEGER/BIGINT / DECIMAL(p,s)整數用 SMALLINT(2B)/INTEGER(4B)/BIGINT(8B);定點數用 DECIMAL(p,s);純 NUMBER 用 FLOAT/REAL/DOUBLE。
ROWIDROWIDROWID功能相似,DB2 ROWID 40 bytes,無 ccsid、datafile/block/row 資訊。

NUMBER 類型詳細對應策略

  • NUMBER(p) 或 NUMBER(p,0) → 整數類型:依精度選 SMALLINT (p≤4)、INTEGER (p≤9)、BIGINT (p≤18)。
  • NUMBER(p,s) (s>0) → DECIMAL(p,s)。
  • NUMBER (無精度) → FLOAT / DOUBLE / REAL。
  • 儲存空間:Oracle NUMBER 變長 (最多 20 bytes);DB2 固定長度,選型需權衡空間與精度。

LOB 類型容量差異

Oracle BFILE (外部二進位檔案) 對應 DB2 DATALINK。

字元類型最佳實務

  • Oracle VARCHAR2(n) (n≤4000) → DB2 定長 CHAR(n) 優於 VARCHAR(n)** (避免變長開銷),若用 VARCHAR 建議指定 ALLOCATE 減少 I/O。
  • 中文資料建表指定 CCSID:CREATE TABLE T (C1 VARCHAR(100) CCSID 935) (935=簡體中文 EBCDIC)。

日期時間轉換範例

-- Oracle DATE → DB2 TIMESTAMP
INSERT INTO DB2_TBL (TS_COL) VALUES (TIMESTAMP('2003-10-20-18.34.23'));

-- 查詢轉換
SELECT CHAR(DATE_COL, ISO), CHAR(TIME_COL, ISO) FROM DB2_TBL;

結語

Oracle 到 DB2 遷移時,資料類型映射為一對多關係,需依實際業務精度、長度、容量需求逐欄位決定。重點關注 DATE/TIMESTAMP、NUMBER 整數/定點數、LOB 容量差異、字元集/CCSID 設定。建立測試驗證流程,確保資料完整性與應用相容性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型Oracle 上限DB2/400 上限備註
BLOB/CLOB4 GB2 GB (V8)DB2 9.5+ 擴大上限
NCLOB/DBCLOB4 GB2 GBDBCLOB 長度單位為雙位元組字元