以下的文章主要是对Oracle SQL到DB2 SQL移植解决方案浅析,OracleSQL到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
wheret.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
wherex.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
wheret.id=35)
connect byt.parent=priort.id
DB2 SQL:
WITH FKK(id) as
(select o.id from a_organ o
whereo.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
wherefk.id=x.parent)
select distinct id from FKK;
上述的相关内容就是对Oracle SQL到DB2 SQL移植解决方案的描述,希望会给你带来一些帮助在此方面。
【编辑推荐】
【责任编辑:孙巧华 TEL:(010)68476606】
点赞 0