以下的文章主要是对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;
相关文章
标签:Oracle