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

发表于:2008-2-01 15:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  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
42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号