1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

对Oracle SQL到DB2 SQL移植的浅析

2022-11-26 | 数据库 | admin | 554°c
A+ A-

以下的文章主要是对Oracle SQL到DB2 SQL移植解决方案浅析,Oracle SQL到DB2 SQL移植现已变得十分抢手,如果你想知道更多的关于其实际应用方面的知识,你就可以浏览下面的文章,相信会对你有所帮助。

1、Oracel中的decode

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

case两种语法模式:

(1)CASE

WHEN 条件 THEN 结果1

ELSE 结果2

END

(2)CASE 表达式1

WHEN 表达式2 THEN 结果1

ELSE 结果2

END

上面的WHEN可以重复多次,就像C中的SWITCH ..CASE的表达.

例如:

SELECTORDNO,CUSNO, 
CASEMONTH(SHIPDATE) 
WHEN´´01´´THEN´´Jan´´ 
WHEN´´02´´THEN´´Feb´´ 
WHEN´´03´´THEN´´Mar´´ 
WHEN´´04´´THEN´´Apr´´ 
WHEN´´05´´THEN´´May´´ 
WHEN´´06´´THEN´´Jun´´ 
WHEN´´07´´THEN´´Jul´´ 
WHEN´´08´´THEN´´Aug´´ 
WHEN´´09´´THEN´´Sep´´ 
WHEN´´10´´THEN´´Oct´´ 
WHEN´´11´´THEN´´Nov´´ 
WHEN´´12´´THEN´´Dec´´ 
END 
FROMFILE 

应用实例:

Oracle SQL:

selectdecode(t.organtypecode,
´´D´´,t.parent,´´S´´,t.parent,t.id) 
fromA_ORGANt 
wheret.parent=35
DB2SQL: 
selectcasex.organtypecode 
when´´D´´then 
x.parent 
when´´S´´then 
x.parent 
else 
x.id 
end 
froma_Organx 
wherex.parent=35; 

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

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

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

Oracle SQL:

selectt.id 
froma_organt 
startwitht.idin(selectdecode(t.organtypecode, 
´´D´´, 
t.parent, 
´´S´´, 
t.parent, 
t.id) 
fromA_ORGAN 
wheret.id=35) 
connectbyt.parent=priort.id 
DB2SQL: 
WITHFKK(id)as 
(selecto.idfroma_organo 
whereo.id=35
UNIONALL 
selectcasex.organtypecode 
when´´D´´thenx.parent 
when´´S´´thenx.parent 
elsex.id 
end 
fromFKKfk,a_organx 
wherefk.id=x.parent) 
selectdistinctidfromFKK; 

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11761.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。