1, Table space for indexes 的不同
Oralce:
|
Create TABLE T1 .............IN DATA_TA
Create Index ........ ON T1 ...... IN INDX_TS
|
DB2:
|
Create TABLE T1 ........ IN DATA_TS INDEX IN INDX_TS
Create INDEX .....ON T1
|
2, RowID
Oracle:
|
Oracle 有RowID ,它是由数据库唯一产生的,在程序里可以获得
|
DB2:
3,一些转换
Oracle:
|
Oracle 支持一些转换,比如:
Create table t1(c1 int);
Select * from t1 where c1=’1’
Select ‘abc’||2 from t1
|
DB2:
|
DB2不支持一些转换,比如:
Create table t1(c1 int);
Select * from t1 where c1=CAST(‘1’ AS INT)
Select ‘abc’||CHAR(2) from t1
|
4,函数的值做为表中的缺省值
Oracle:
|
Oracle 支持把函数的值做为表中的缺省值,比如:
Create table t1(C1 Number DEFAULT FN() NOT NULL,
C2 DATE DEFAULT NOT NULL SYSDATE
)
|
DB2:
|
DB2不支持把函数的值做为表中的缺省值,比如:
Create table t1(C1 INT NOT NULL,
C2 TIMESTAMP DEFAULT CURRENT TIMESTAMP
)
这个是不允许的
|
5,一些内建的函数
|
Oracle
|
DB2
|
|
NVL
|
COALESCE
|
|
INSTR
|
LOCATE
|
|
DECODE
|
CASE
|
|
LENGTH
|
LENGTH
|
|
TO_CAHR()
|
CHAR(),INTEGER(),TO_CHAR()
|
|
TO_DATE()
|
CHAR(date,FN)
TO_DATE()
|
6,公用的同义词(Public Synonyms)
Oracle:
DB2:
7,Date/Time
|
Oracle
|
DB2
|
|
SYSDATE
|
CURRENT DATE
CURRENT TIMESTAMP
|
|
DT1+2
Add_months(DT1,5)
|
DT1+2days
DT2+5months
DT1+3years
|
|
DT1-DT2
|
TIMESTAMODIFF(k,Char(TS1-TS2)
|
|
To_date(DT1,’MM/DD/YYYY’)
|
Char(DT1,USA)
Char(TM1,ISO)
|
8,外连接
|
Oracle
|
DB2
|
|
Select A.lastname,A_id,B.name From emp A,Customer B
where A.id(+)=B.sales_rep_id;
|
Select A.lastname,A_id,B.name From emp A, RIGHT OUTER JOIN Customer B
where A.id=B.sales_rep_id;
|
|
Select A.lastname,A_id,B.name From emp A,Customer B
where A.id=B.sales_rep_id(+);
|
Select A.lastname,A_id,B.name From emp A, LEFT OUTER JOIN Customer B
where A.id=B.sales_rep_id;
|
|
Select A.lastname,A_id,B.name From emp A,Customer B
where A.id(+)=B.sales_rep_id(+);
|
Select A.lastname,A_id,B.name From emp A, Full OUTER JOIN Customer B
where A.id=B.sales_rep_id;
|
现在, Oracle 9i也支持这种ANSI join 语法
9,字符串和null的合并
Select ‘abc’||c1 from T1
C1 is null
Result :
Oracle : abc
DB2: null
要想得到’abc’,DB2中需要这样处理
Select ‘abc’||coalesce(c1,’’) from T1
发表于 @ 2007年06月13日 11:49:00|评论(loading...)|编辑