因为项目需要,要将Oracle上的东西转移到DB2,于是收集整理了一些需要修改点的注意事项,拿出来大家分享。
ORACLE
和
DB2
实现
相
同功能的
实例
(
主要以
Oracle8I
和
DB2 7.X
为
例
,已测试
) | ||
取前N条记录
|
Oracle
|
Select * from TableName where rownum <= N;
|
DB2
|
Select * from TableName fetch first N rows only;
| |
取得系统日期
|
Oracle
|
Select sysdate from dual;
|
DB2
|
Select current timestamp from sysibm.sysdummy1;
| |
空值转换
|
Oracle
|
Select productid,loginname,nvl(cur_rate,'0') from TableName ;
|
DB2
|
Select productid,loginname,value(cur_rate,'0') from TableName;
| |
类型转换
|
Oracle
|
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
|
DB2
|
select varchar(current timestamp) from sysibm.sysdummy1;
| |
|
■Oracle数据类型改变函数:to_char()、to_date()、to_number()等;
如果仅仅取年,月,日等,可以用
to_char(sysdate,
'YYYY'),to_char('MM') ,to_char('DD')
取得。只取年月日
TRUNC(SYSDATE)
,取时分秒
TO_CHAR(SYSDATE,'HH24:MI:SS')
。
| |
■DB2数据类型改变函数:
char()
、varchar()、int()、date()、time()等;
取得年,月,日等的写法:
YEAR(current timestamp)
,
MONTH(current timestamp)
,
DAY(current timestamp)
,
HOUR(current timestamp)
,
MINUTE(current timestamp)
,
SECOND(current timestamp)
,
MICROSECOND(current timestamp)
,只取年月日可以用
DATE(current timestamp)
,取时分秒
TIME(current timestamp)
。
Char()
是定长字符串(
1-255
),
varchar()
为非定长字符串(
1-32672
)
日期 , 时间形态变为字符形态 : char(current date) , char(current time) 将字符串转换成日期或时间形态 : TIMESTAMP('2002-10-20 12:00:00'),DATE('2002-10-20'),DATE('10/20/2002'),TIME('12:00:00') | ||
快速清空大表
|
Oracle
|
truncate table TableName ;
|
DB2
|
alter table TableName active not logged initially with empty table;
| |
关于ROWID
|
Oracle
|
它是由数据库唯一产生的,在程序里可以获得
|
DB2
| ||
To_Number
|
Oracle
|
select to_number('123')
from dual;
|
DB2
|
select cast('123' as integer) from sysibm.sysdummy1
;
| |
复制创建表
|
Oracle
|
create table a as select * from b ;
|
DB2
|
create table a like b ;
|