1. 程式人生 > >DB2 的 case when then else end 條件分支的處理

DB2 的 case when then else end 條件分支的處理

兩種語法模式:


(1):只有一個分支

     CASE
        WHEN 條件  THEN 結果1
        ELSE            結果2
      END
(2):支援多種分支

     CASE 表示式1
        WHEN 表示式2   THEN 結果1
        ELSE            結果2
   END
上面的WHEN可以重複多次,

===================

簡單示例:

  1. select    
  2. case when 1 = 1
  3.     then 1
  4. else2
  5.     end;  
  1. select    
  2. case2
  3.     when 1 then 1
  4.     when 2 then 2
  5.     when 3 then 3
  6. else4
  7.     end;  

============================

下面詳細的各舉幾個例子,這些例子可以用於ESQL和互動式的SQL中
eg1:處理被0除

  1. SELECT   
  2. CASE   
  3. WHEN fileld1=0 THEN 0
  4. ELSE fileld2/field1  
  5. END  
  6. FROM  FILE  


eg2:欄位值對應轉換
  1. SELECT ORDNO,CUSNAM,SHIPDATE,CASE  
  2.                 WHEN SHIPDATE<CURDATE()  THEN 'OVERDUE'
  3.                 WHEN SHIPDATE=CURDATE()  THEN 'PROCESSING'
  4.                 WHEN SHIPDATE>;CURDATE()  THEN 'ACTIVE'
  5.               END  
  6. FROM FILE  


eg3:獲取月份的名字:上面的例子
  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  
  

===================

CASE很好用,不僅SELECT可以用,UPATE裡面也蠻靈

以上是關於查詢的  下面再來個 update的

貼程式碼直觀:

  1. UPDATE properities  
  2. SET   taxrate=  
  3.    CASE   
  4.        WHEN area<10000 THEN 0.05  
  5.        WHEN area<20000 THEN 0.07  
  6.        ELSE 0.09  
  7.    END