oracle和db2的sql语句区别

oracle和db2的sql语句区别

<script type="text/javascript"> 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); } } </script> <script type="text/javascript">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();}</script>

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 :日期时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值