程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle與DB2數據類型分類對應說明

Oracle與DB2數據類型分類對應說明

編輯:關於Oracle數據庫

首先,通過下表介紹與DB2/400數據類型之間的對應關系,是一對多的關系,具體采用哪種對應關系,應具體問題具體分析。 注重事項: Oracle中的DATE含有年、月、日、時、分、秒,它和DB2/400中的DATE不相互對應,DB2/400中的DATE只有年、月、日,TIME類型含有時、分、秒,因此日期和時間類型要進行轉換,請參照下表。 Oracle

DB2/400   Oracle數據類型

注重事項 DB2 UDB數據類型注重事項 DATE   DATE

TIME

TIMESTAMP l 假如只使用MM/DD/YYY,那麼使用DATE類型。

l 假如只使用HH:MM:SS, 那麼使用TIME類型。

l 假如要使用日期和時間,則使用時間戳類型(TIMESTAMP)

l 可以使用Oracle中的TO_CHAR()函數來取DATE的字串來分別與DB2/400的DATE、TIME相匹配。

VARCHAR2(n) n<=4000 CHAR(n)

VARCHAR(n) l 若n<=32766,則使用DB2/400中的CHAR類型、VARCHAR LONG n<=2GB VARCHAR(n)

CLOB(n) l 若n<=32K,則使用DB2/400中的CHAR類型、VARCHAR。

l 若32K=< n <=2GB,則使用CLOB。 ROW&

LONG ROW n<=255 CHAR(n) FOR BIT DATA

VARCHAR(n) FOR BIT DATA

BLOB(n) l 若n<=32K, 則使用CHAR(n) FOR BIT DATA 或

VARCHAR(n) FOR BIT DATA

l 若n<=2GB, 則使用BLOB(n) BLOB n<=4GB BLOB(n) 若n<=2GB, 則使用BLOB(n) CLOB n<=4GB CLOB(n) 若n<=2GB, 則使用CLOB(n) NCLOB n<=4GB DBCLOB(n) 若n<=2GB, 則使用DBCLOB(n/2) NUMBER SMALLINT/INTEGER/BIGINT

DECIMAL(p,s)/NUMBER(p,s)

Float(n)/ REAL/DOUBLE l VARCHAR 若Oracle中定義NUMBER(p) 或 NUMBER(p,s), 則使用SAMLLINT/INTEGER/BIGINT

l 若Oracle中定義NUMBER(p,s), 則使用DECIMAL(p,s)

l 若Oracle中定義NUMBER,則使用FLOAT(n)/REAL/DOUBLE NUMBER Oracle中的NUMBER類型可以對應DB2/400中的很多類型,這種對應關系要依靠於Oracle中number將用於保存何種類型的數據,是整型還是帶有小數位的實型數據,另外還要考慮類型所占用的存儲空間,例如:SAMLLINT占2 byte, INTEGER占4 byte; BIGINT占8 byte;Oracle中的NUMBER類型所占用的存儲空間要根據它的定義而定,例如缺省精度下的NUMBER有38個數字長,占用20 byte的空間。具體的對應關系請參照上表。

ROW and LOB類型 DB2/400提供VARCHAR和CLOB與ORACLE中的RAW和LONG RAW相對應。ORACLE也支持大對象:BLOB、CLOB、CLOB和NCLOB, ORACLE中的BLOB和CLOB可以提供4GB的空間,而DB2/400中的BLOB和CLOB只能存放2GB的數據;DB2/400中的DBCLOB與ORACLE中的NCLOB 2GB相對應。Oracle 中的BFILE數據類型用於治理數據庫以外的二進制數據,數據庫中的表將指向數據庫外部的存放的BFILE文件,DB2/400也提供一個類似的數據類型DATALINK相對應。 ROWID Oracle ROWIND虛擬列用於對表中的某一列進行唯一標示,DB2/400中也有這樣的數據類型ROWID,它與ORACLE中的ROWID的功能相似。DB2/400中的ROWID可以存放40 byte的數據用來唯一標示表中的每一行,它沒有ccsid屬性,這些信息中沒有關於datafile、 block 或 row的信息。

例如: CREATE TABLE LIBRARYNAME/ORDERS2 (ORDERNO ROWID, SHIPPED_TO VARCHAR (36) , ORDER_DATE DATE) ORDERNO的數據類型為ROWID,用於存放訂單號,每當插入一行時,系統自動生成一個值,存放進這個字段。可以用OPERATION NAVIGATOR查看它的內容。 Character type DB2/400的CHAR、VARCHAR類型與ORACLE中的VARCHAR2(n)類型相對應,但是ORACLE中的VARCHAR2(n)類型僅用於存放較小的字符串,這裡的n小於4000,因此在這種情況下,最好用定長的CHAR(N)類型與ORACLE的VARCHAR2(n)相對應,這樣不僅可以提高效率,還可以節省存儲空間,若使用VARCHAR(n)類型最好用ALLOCATE參數,這樣可以提高數據庫的性能,它可以減少內存和硬盤之間的輸入/輸出操作。

要注重DB2/400中的字符串中文輸入問題,要想在DB2/400上輸入中文應用這樣的SQL創建表,這裡的CCSID 935,代表簡體中文。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved