DB2 的 case when then else end 條件分支的處理
阿新 • • 發佈:2019-02-05
兩種語法模式:
(1):只有一個分支
CASE
WHEN 條件 THEN 結果1
ELSE 結果2
END
(2):支援多種分支
CASE 表示式1
WHEN 表示式2 THEN 結果1
ELSE 結果2
END
上面的WHEN可以重複多次,
===================
簡單示例:
- select
- case when 1 = 1
- then 1
- else2
- end;
-
select
- case2
- when 1 then 1
- when 2 then 2
- when 3 then 3
- else4
- end;
============================
下面詳細的各舉幾個例子,這些例子可以用於ESQL和互動式的SQL中
eg1:處理被0除
- SELECT
- CASE
- WHEN fileld1=0 THEN 0
- ELSE fileld2/field1
- END
- FROM FILE
eg2:欄位值對應轉換
- SELECT ORDNO,CUSNAM,SHIPDATE,CASE
-
WHEN SHIPDATE<CURDATE() THEN 'OVERDUE'
- WHEN SHIPDATE=CURDATE() THEN 'PROCESSING'
- WHEN SHIPDATE>;CURDATE() THEN 'ACTIVE'
- END
- FROM FILE
eg3:獲取月份的名字:上面的例子
- SELECT ORDNO,CUSNO,
- CASE MONTH(SHIPDATE)
- WHEN '01' THEN 'Jan'
- WHEN '02' THEN 'Feb'
- WHEN '03' THEN 'Mar'
-
WHEN '04'
- 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
===================
CASE很好用,不僅SELECT可以用,UPATE裡面也蠻靈
以上是關於查詢的 下面再來個 update的
貼程式碼直觀:
- UPDATE properities
- SET taxrate=
- CASE
- WHEN area<10000 THEN 0.05
- WHEN area<20000 THEN 0.07
- ELSE 0.09
- END