zoukankan      html  css  js  c++  java
  • Oracle 与 DB2 数据类型分类对应说明

      在网上找到一片关于oracle与DB2数据类型的比较,特记下来。

    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

    若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与Oracel中的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,代表简体中文。

  • 相关阅读:
    oracle11g安装客户端检查先决条件失败
    WinForm textbox 只允许输入数字
    Oracle存储过程
    Oracle游标
    Oracle之PL/SQL流程控制
    Oracle 变量
    log4net 使用
    Python Matplotlib 画图显示中文问题
    Oracle 数据迁移到 SQL Server
    C结构体【转】
  • 原文地址:https://www.cnblogs.com/newstar/p/1711486.html
Copyright © 2011-2022 走看看