zoukankan      html  css  js  c++  java
  • db2和oracle字段类型对比

      在网上找到一片关于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,代表简体中文。

  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/xiaojianblogs/p/7501717.html
Copyright © 2011-2022 走看看