因为项目需要,要将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 | 有此概念,但不能被程序获得。解决方案待定(高人请联系本人 caoxicao@hotmail.com )。 | 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 ; |
|
转载于:https://www.cnblogs.com/wuxl360/p/5542711.html