DB2 的 case when then else end 条件分支的处理
两种语法模式:(1):只有一个分支
CASE
WHEN条件THEN结果1
ELSE结果2
END
(2):支持多种分支
CASE表达式1
WHEN表达式2THEN结果1
ELSE结果2
END
上面的WHEN可以重复多次,
===================
简单示例:
[*]select
[*]casewhen1=1
[*]then1
[*]else2
[*]end;
[*]select
[*]case2
[*]when1then1
[*]when2then2
[*]when3then3
[*]else4
[*]end;
============================
下面详细的各举几个例子,这些例子可以用于ESQL和交互式的SQL中
eg1:处理被0除
SELECT CASE WHEN fileld1=0 THEN 0ELSE fileld2/field1ENDFROMFILE
eg2:字段值对应转换
SELECT ORDNO,CUSNAM,SHIPDATE,CASEWHEN SHIPDATE<CURDATE()THEN 'OVERDUE'WHEN SHIPDATE=CURDATE()THEN 'PROCESSING'WHEN SHIPDATE>;CURDATE()THEN 'ACTIVE'ENDFROM FILE
eg3:获取月份的名字:上面的例子
SELECT ORDNO,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'ENDFROM FILE
===================
CASE很好用,不仅SELECT可以用,UPATE里面也蛮灵
以上是关于查询的 下面再来个 update的
贴代码直观:
UPDATE properitiesSET taxrate=CASE WHEN area<10000 THEN 0.05WHEN area<20000 THEN 0.07ELSE 0.09END
好了
页:
[1]