82870034 发表于 2016-11-17 08:40:46

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]
查看完整版本: DB2 的 case when then else end 条件分支的处理