对Oracle SQL到DB2 SQL移植的浅析


  本文标签:Oracle SQL

  以下的文章主要是对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的表达.

  例如:

  

  1. SELECT ORDNO,CUSNO,  
  2. CASE MONTH(SHIPDATE)  
  3. WHEN ´´01´´ THEN ´´Jan´´  
  4. WHEN ´´02´´ THEN ´´Feb´´  
  5. WHEN ´´03´´ THEN ´´Mar´´  
  6. WHEN ´´04´´ THEN ´´Apr´´  
  7. WHEN ´´05´´ THEN ´´May´´  
  8. WHEN ´´06´´ THEN ´´Jun´´  
  9. WHEN ´´07´´ THEN ´´Jul´´  
  10. WHEN ´´08´´ THEN ´´Aug´´  
  11. WHEN ´´09´´ THEN ´´Sep´´  
  12. WHEN ´´10´´ THEN ´´Oct´´  
  13. WHEN ´´11´´ THEN ´´Nov´´  
  14. WHEN ´´12´´ THEN ´´Dec´´  
  15. END  
  16. FROM FILE  

  

  应用实例:

  Oracle SQL:

  

  1. select decode(t.organtypecode, 
    ´´D´´, t.parent, ´´S´´, t.parent, t.id)  
  2. from A_ORGAN t  
  3. where t.parent = 35 
  4. DB2 SQL:  
  5. select case x.organtypecode  
  6. when ´´D´´ then  
  7. x.parent  
  8. when ´´S´´ then  
  9. x.parent  
  10. else  
  11. x.id  
  12. end  
  13. from a_Organ x  
  14. where x.parent = 35;  

  

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

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

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

  Oracle SQL:

  

  1. select t.id  
  2. from a_organ t  
  3. start with t.id in (select decode(t.organtypecode,  
  4. ´´D´´,  
  5. t.parent,  
  6. ´´S´´,  
  7. t.parent,  
  8. t.id)  
  9. from A_ORGAN  
  10. where t.id = 35)  
  11. connect by t.parent = prior t.id  
  12. DB2 SQL:  
  13. WITH FKK(id) as  
  14. (select o.id from a_organ o  
  15. where o.id=35 
  16. UNION ALL  
  17. select case x.organtypecode  
  18. when ´´D´´ then x.parent  
  19. when ´´S´´ then x.parent  
  20. else x.id  
  21. end  
  22. from FKK fk, a_organ x  
  23. where fk.id=x.parent)  
  24. select distinct id from FKK;  

  

  上述的相关内容就是对Oracle SQL到DB2 SQL移植解决方案的描述,希望会给你带来一些帮助在此方面  。