Oracle和DB2数据类型的对应
首先,通过下表介绍ORACLE与DB2/400数据类型之间的对应关系,是一对多的关系,具体采用哪种对应关系,应具体问题具体分析。
注意事项:
DATE and TIME
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
若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
Array35,代表简体中文。
例如:
CREATE TABLE MYLIB/ZHONG (HANZI CHAR (30 ) CCSID Array35 NOT
NULL WITHDEFAULT)
Oracle和DB2语法的差异:
1.top10的差异
db2- select * from tableName
fetch first 10 rows only
oracle- select * from tableName where
rownum <= 10
2.insert into 区别
db2允许多行插入-
insert into tableName values (11,22,33);
(22,33,44);
oracle这样执行多行插入-
insert
into tableName values(11,22,33),(22,33,44);
3.update 区别
db2可以有两种放入update-
update tableName set(col1,col2) = (11,22);
update tableName set col1 = 11,col2=22;
oracle只支持后一种
4.取得系统时间区别(实际是伪表的差异)
db2-
select current timestamp from
sysibm.sysdummy1;
oracle-
select sysdate from dual;
5.日期转换字符类型
db2-
CHAR(dateValue,ISO); [ 或CHAR(dateValue) ]
CHAR(timeValue,ISO); [ 或CHAR(timeValue) ]
oracle-
TO_CHAR(dateValue,'YYYY-MM-DD');
TO_CHAR(timeValue,'HH24:MI:SS');
6.转换日期时间字符串至日期时间类型
db2-
date('2010-11-23');
time('18:59:59');
timestamp('2010-2-13 19:12:35');
oracle-
to_date('2010-11-23','yyyy-mm-dd');
to_date('23:35:21','HH24:MI:SS');
7.快速清空大表
db2-
alter table tableName active not logged initially with empty
table;
oracle-
truncate table tableName ;
8.创建类似表
oracle-
create table table1 as select * from table2;
db2-
create table table1 like table2;
9.修改字段长度和类型
10.空值处理
11.创建索引
12.更改列名
13.更改列类型
14.控制语句的区别
15.执行sql文件的区别
16.查看当前用户的表和试图
12、数据类型转换函数
Oracle DB2 兼容写法
整型转字符型 to_char(1) char(1) cast(1 as char)
字符串转整型 to_number('1') int('1') cast('1'
as int)
字符串转浮点型 to_number('1.1') double('1.1') 无
浮点型转字符串 to_char(1.1) char(1.1) 无
字符串转日期 to_date('2011-04-20','yyyy-mm-dd') date('2011-04-20') 无
字符串转时间戳 to_date('2011-04-20 19:28:30','YYYY-MM-DD
HH24:MI:SS') to_date('2011-04-20 19:28:30','YYYY-MM-DD
HH24:MI:SS')
sql怎么将timestamp转化为date类型 timestamp转化为date db2
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
timestamp转换我datetime xml timestamp转化为date工具
本文2023字,预计阅读需10分钟;我们在处理时间相关的数据时有很多库可以用,最常用的还是内置的datetime、time这两个。做数据分析时基本都会导入pandas库,而pandas提供了Timestamp和Timedelta两个也很强大的类,并且在其官方文档[1]上直接写着对标datetime.datetime,所以就打算深入一下pandas内置的Timestamp的用法,在不导入dateti
date转timestamp格式 date转时间戳 vb 打开sdf数据 哪个是更早的时间 date 时间戳只保留年月日 -
elementui文字标签
有时间总结了下动态添加tab页的相关知识:非常鄙视那些引用我文章的网站和个人网站,引用了别人的东西还带商业广告!~在此谢绝转载 一。 首先得写个动态添加Tab页的JS操作文件,我想在网上应该能找到,喜欢自己可以写 二 。其次是 写个动态添加Tab页的样式CSS文件,控制TAB标签等样式 &
elementui文字标签 javascript ViewUI CSS 动态添加