Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103652944
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-17 21:21:22

 来源:

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;
阅读(1343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~