新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > DB2教程 > 正文:教你快速掌握Oracle SQL到DB2 SQL的移植

教你快速掌握Oracle SQL到DB2 SQL的移植

新客网 XKER.COM 2008-01-28 来源:赛迪网 30120 收藏本文

2、Oracle中的Start with...Connect By递归查询

DB2解决方案:用with公共递归表达式来解决。

DB2解决方案:用case条件表达式完成。

Oracle SQL: 

------------------- 

select t.id 

from a_organ t 

start with t.id in (select decode(t.organtypecode, 

''D'', 

t.parent, 

''S'', 

t.parent, 

t.id) 

from A_ORGAN 

where t.id = 35) 

connect by t.parent = prior t.id 

DB2 SQL: 

------------------------- 

WITH FKK(id) as 

(select o.id from a_organ o 

where o.id=35 

UNION ALL 

select case x.organtypecode 

when ''D'' then x.parent 

when ''S'' then x.parent 

else x.id 

end 

from FKK fk, a_organ x 

where fk.id=x.parent) 

select distinct id from FKK;

3、Oracle中的dual表对应DB2中的SYSIBM.SYSDUMMY1表

DB2解决方案:对应于DB2中的 SYSIBM.SYSDUMMY1表

Oracle SQL: 

------------------------- 

select 15 as ttt from dual 

结果: 

ttt 

------- 

15 



DB2 SQL: 

------------------------- 

select 15 as ttt from SYSIBM.SYSDUMMY1 

结果: 

ttt 

------- 

15

4、日期转换问题

DB2解决方案:有相应的函数

Oracle SQL: 

------------------------- 

select m.* 

from dj_mcdj m 

where m.mcqc || '' '' like ''%$P%'' 

and m.xzqhdm || '' '' like ''%$P%'' 

and m.hylbdm || '' '' like ''%$P%'' 

and m.blqsrq >= to_date(''$P'', ''yyyy-mm-dd'') 

and m.blqsrq < to_date(''$P'', ''yyyy-mm-dd'') 1 

DB2 SQL: 

select m.* 

from dj_mcdj m 

where m.mcqc || '' '' like ''%%'' 

and m.xzqhdm || '' '' like ''%%%'' 

and m.hylbdm || '' '' like ''%%%'' 

and date(m.blqsrq) >= date(''1900-01-01'') 

and date(m.blqsrq) < date(''2050-01-01'') 1 day

共4页: 上一页 [1] [2] [3] [4] 下一页
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐