DB2和Oracle的区别 下载本文

例子:

如上图,从grandchild开始查询其所有的父节点,首先设定虚拟表起点,即左边第四行;依次往上推,其父亲是son = 上一行的child,即VT.parent = T.child... 最后查询结果为: --------------------------- son father grandpa

Oracle 与 DB2 9 概念总结 Oracle DB2 9 注解 实例 实例 一个 DB2 实例可以包含多个数据库 数据库 数据库 DB2 使用两个级别的配置:Database ManaginitSID.oDBM CFG 和 ra或 和 Database Configuration(DB CFG)(数DB CFG SPFILE 可以动态更改 表空间 表空间 DB2 支持 SMS 和 DMS 这两类表空间。DMDB2 支持以下几种页大小:4k、8k、16k 和 数据块 页 内。它不能像在 Oracle 中那样跨多个页 盘区 盘区 数据文件 DMS 表空间容器 用于 DMS 表空间的容器可以是原始设备,也重做日志事务日志文件 文件 数据缓冲缓冲池 区 数据库管理器共SGA 享内存和数据库共享内存 数据字典 编目 库缓存 包缓存 大型池 实用程序堆 数据字典编目缓存 缓存 SYSTEM 表空间

DB2 没有一组预定义的缓冲池,但是可以根据页大小的表空间时,必须预先存在一个具有给 SYSCATSPACE 表空间 ORACLE DB2 兼容写法 DB2、ORACLE SQL写法的主要区别

说实话,ORACLE把国内的程序员惯坏了,代码中的SQL充斥着大量ORACLE特性,几乎没人知道ANSI的标准SQL是什么样子,导致程序脱离了ORACLE根本无法运行,还好随着hibernate的流行,情况有了很大改观

DB2作为众多国际大客户的选择(据说世界500强80%用DB2,前100强更是全部采用DB2),在国内真的很不流行,属于小众数据库,但是没办法,现在的项目要用DB2,所以不得不面对熟悉ORACLE的开发同事们写出的“ORACLE版代码”,众多的兼容性问题搞得很是头大,遂整理了一份经常遇到的兼容性问题列表供大家参考,貌似最近问题少了些,但愿这个势头能继续下去

1、数据类型转换函数 整型转字字符串转整形 字符串转浮点型 浮点型转字字符串转日期 字符串转时间戳 符型 符串 to_char(to_number('1to_number('1.1'to_char(1.1to_date('2007-to_date('2007-04-21) ') ) ) 04-26','yyyy-m08:08:08','YYYY-MMm-dd') HH24:MI:SS') char(1) int('1') double('1.1') char(1.1) date('2007-04-to_date('2007-04-226') 08:08:08','YYYY-MMHH24:MI:SS') cast(1 as cast('1' as int) 无 无 无 兼容 char) 2、Where条件弱类型判断

oracle: where 字符型字段 in (整形) 是允许,DB2不允许 select 'abc' from dual where '1' in (1) 在oracle下可通过

select 'abc' from sysibm.sysdummy1 where '1' in (1) 在DB2下报错 oracle:where 字符型字段=数字型字段允许,DB2不允许 select 'abc' from dual where '1'=1 在oracle下可通过

select 'abc' from sysibm.sysdummy1 whre '1'=1 在DB2下报错

3、replace关键字

oracle支持,DB2不支持 create or replace语句在DB2下是非法的

4、子查询别名

ORACLE 支持select * from(select 1 from dual) 或者 select * from(select 1 from dual) t