以下的文章主要是对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的表达.
例如:
- SELECT ORDNO,CUSNO,
- CASE MONTH(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
- FROM FILE
应用实例:
Oracle SQL:
- select decode(t.organtypecode,
´´D´´, t.parent, ´´S´´, t.parent, t.id)- from A_ORGAN t
- where t.parent = 35
- DB2 SQL:
- select case x.organtypecode
- when ´´D´´ then
- x.parent
- when ´´S´´ then
- x.parent
- else
- x.id
- end
- from a_Organ x
- where x.parent = 35;
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;
上述的相关内容就是对Oracle SQL到DB2 SQL移植解决方案的描述,希望会给你带来一些帮助在此方面。
【编辑推荐】