鷹翔宇空

          學(xué)習(xí)和生活

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

          轉(zhuǎn)自:http://searchdatabase.techtarget.com.cn/askexperts/190/2239190.shtml?ticket=ST-16422-ztfNySbuR6GzRSaauT6G

           

            首先,通過(guò)下表介紹ORACLE與DB2/400數(shù)據(jù)類型之間的對(duì)應(yīng)關(guān)系,是一對(duì)多的關(guān)系,具體采用哪種對(duì)應(yīng)關(guān)系,應(yīng)具體問(wèn)題具體分析。

            注意事項(xiàng):

            DATE and TIME

            Oracle中的DATE含有年、月、日、時(shí)、分、秒,它和DB2/400中的DATE不相互對(duì)應(yīng),DB2/400中的DATE只有年、月、日,TIME類型含有時(shí)、分、秒,因此日期和時(shí)間類型要進(jìn)行轉(zhuǎn)換,請(qǐng)參照下表。

          Oracle
          DB2/400
          Oracle數(shù)據(jù)類型
          注意事項(xiàng) DB2 UDB數(shù)據(jù)類型 注意事項(xiàng)
          DATE   DATE
          TIME
          TIMESTAMP l
          如果只使用MM/DD/YYY,那么使用DATE類型。
          l 如果只使用HH:MM:SS, 那么使用TIME類型。
          l 如果要使用日期和時(shí)間,則使用時(shí)間戳類型(TIMESTAMP)
          l 可以使用Oracle中的TO_CHAR()函數(shù)來(lái)取DATE的字串來(lái)分別與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
          若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類型可以對(duì)應(yīng)DB2/400中的很多類型,這種對(duì)應(yīng)關(guān)系要依賴于Oracle中number將用于保存何種類型的數(shù)據(jù),是整型還是帶有小數(shù)位的實(shí)型數(shù)據(jù),另外還要考慮類型所占用的存儲(chǔ)空間,例如:SAMLLINT占2 byte, INTEGER占4 byte; BIGINT占8 byte;Oracle中的NUMBER類型所占用的存儲(chǔ)空間要根據(jù)它的定義而定,例如缺省精度下的NUMBER有38個(gè)數(shù)字長(zhǎng),占用20 byte的空間。具體的對(duì)應(yīng)關(guān)系請(qǐng)參照上表。

            ROW and LOB類型

            DB2/400提供VARCHAR和CLOB與ORACLE中的RAW和LONG RAW相對(duì)應(yīng)。ORACLE也支持大對(duì)象:BLOB、CLOB、CLOB和NCLOB, ORACLE中的BLOB和CLOB可以提供4GB的空間,而DB2/400中的BLOB和CLOB只能存放2GB的數(shù)據(jù);DB2/400中的DBCLOB與ORACLE中的NCLOB 2GB相對(duì)應(yīng)。Oracle 中的BFILE數(shù)據(jù)類型用于管理數(shù)據(jù)庫(kù)以外的二進(jìn)制數(shù)據(jù),數(shù)據(jù)庫(kù)中的表將指向數(shù)據(jù)庫(kù)外部的存放的BFILE文件,DB2/400也提供一個(gè)類似的數(shù)據(jù)類型DATALINK相對(duì)應(yīng)。

            ROWID

            Oracle ROWIND虛擬列用于對(duì)表中的某一列進(jìn)行唯一標(biāo)示,DB2/400中也有這樣的數(shù)據(jù)類型ROWID,它與ORACLE中的ROWID的功能相似。DB2/400中的ROWID可以存放40 byte的數(shù)據(jù)用來(lái)唯一標(biāo)示表中的每一行,它沒(méi)有ccsid屬性,這些信息中沒(méi)有關(guān)于datafile、 block 或 row的信息。

            例如:

            CREATE TABLE LIBRARYNAME/ORDERS2 (ORDERNO ROWID, SHIPPED_TO VARCHAR (36) , ORDER_DATE DATE) ORDERNO的數(shù)據(jù)類型為ROWID,用于存放訂單號(hào),每當(dāng)插入一行時(shí),系統(tǒng)自動(dòng)生成一個(gè)值,存放進(jìn)這個(gè)字段。可以用OPERATION NAVIGATOR查看它的內(nèi)容。

            Character type

            DB2/400的CHAR、VARCHAR類型與ORACLE中的VARCHAR2(n)類型相對(duì)應(yīng),但是ORACLE中的VARCHAR2(n)類型僅用于存放較小的字符串,這里的n小于4000,因此在這種情況下,最好用定長(zhǎng)的CHAR(N)類型與ORACLE的VARCHAR2(n)相對(duì)應(yīng),這樣不僅可以提高效率,還可以節(jié)省存儲(chǔ)空間,若使用VARCHAR(n)類型最好用ALLOCATE參數(shù),這樣可以提高數(shù)據(jù)庫(kù)的性能,它可以減少內(nèi)存和硬盤(pán)之間的輸入/輸出操作。

            要注意DB2/400中的字符串中文輸入問(wèn)題,要想在DB2/400上輸入中文應(yīng)用這樣的SQL創(chuàng)建表,這里的CCSID 935,代表簡(jiǎn)體中文。

            例如:

            CREATE TABLE MYLIB/ZHONG (HANZI CHAR (30 ) CCSID 935 NOT NULL WITHDEFAULT)

          posted on 2006-03-10 16:18 TrampEagle 閱讀(1199) 評(píng)論(0)  編輯  收藏 所屬分類: 技術(shù)文摘
          主站蜘蛛池模板: 绩溪县| 武功县| 闻喜县| 安阳县| 竹北市| 兴仁县| 苏尼特右旗| 宁夏| 尼勒克县| 南昌市| 黄石市| 蕲春县| 耒阳市| 海阳市| 青冈县| 凤台县| 沿河| 乌拉特前旗| 黄浦区| 内丘县| 九寨沟县| 南昌市| 积石山| 宝丰县| 台州市| 遵义市| 余干县| 玛沁县| 荣成市| 长宁区| 项城市| 永春县| 峨眉山市| 包头市| 济南市| 天门市| 郴州市| 合江县| 南充市| 韶山市| 正阳县|