您的位置:首页 > 数据库 > Oracle

oracle和db2的sql语句区别

2009-09-10 10:42 441 查看



oracle和db2的sql语句区别

document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length>300) {
text = text + "/r/n/n本文来自CSDN博客,转载请标明出处:" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}

function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}

1


、取前

N


条记录


Oracle




Select * from TableName where rownum <= N;

DB2


Select * from TableName fetch first N rows only;

2


、取得系统日期


Oracle


Select sysdate from dual;

DB2


Select current timestamp from sysibm.sysdummy1;

3


、空值转换


Oracle


Select productid,loginname,nvl(cur_rate,'0') from TableName ;

DB2


Select productid,loginname,value(cur_rate,'0') from TableName;

Coalesce(cur_rate,'0')

4


、类型转换


8

版有了
to_char,to_date,9

版新增了
to_number



Oracle


select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;

DB2


select varchar(current timestamp) from sysibm.sysdummy1;

l

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')



l

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-2012:00:00'),DATE('2002-10-20'),DATE('10/20/2002'),TIME('12:00:00')

l

目前
DB2 V8

也支持
to_char


to_date

5


、快速清空大表


Oracle


truncate table TableName ;

DB2


alter table TableName active not logged initially with empty table;

6


、关于

ROWID


Oracle

它是由数据库



唯一产生的,在程序里可以获得
DB2 v8

也有此功能。

7




To_Number


Oracle


select to_number('123') from dual;

DB2


select cast('123' as integer) from sysibm.sysdummy1;

SELECT CAST ( current time as char(8)) FROMsysibm.sysdummy1

8


、创建类似表


Oracle


create table a as select * from b ;

DB2


create table a like b ;

CREATE TABLE tab_newAS select col1,col2


FROMtab_old DEFINITION ONLY (8

版有效,
9

版无效
)

9




decode


方法


Oracle


decode

方法(
DECODE(
条件,
值1,
翻译值1,
值2,
翻译值2,...
值n,
翻译值n,
缺省值)

)或者
case

语句
DB2

中只有
CASE

表达式
SELECT id ,name ,CASE

WHEN integer(flag)=0 THEN ‘


’ WHEN integer(flag)=1 THEN ‘


’ ELSE ‘

异常
’END FROM TEST

或者
SELECT id ,name , CASE integer(flag) WHEN 0 THEN ‘


’ WHEN 1 THEN ‘


’ELSE ‘

异常
’END FROM TEST

10


、子查询(

8


版,

9


版也支持子查询)


Oracle:

直接用子查询

Db2:with

语句
WITH a1 AS(select max(id) as aa1 from test ) select id ,aa1 from test ,a1

11

、数据类型

比较大的差别:

Oracle


char 2000

DB2: char 254

Oracle: date datetime

Db2:
DATE

:日期
TIME

:时间
TIMESTAMP

:日期时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: