程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> case的執行順序 & 嵌套使用,case執行順序

case的執行順序 & 嵌套使用,case執行順序

編輯:Oracle教程

case的執行順序 & 嵌套使用,case執行順序


我們先來看一下表中數據的情況:

select * from  PRODUCTINFO

 

PRODUCTID PRODUCTNAME PRODUCTPRICE QUANTITY CATEGORY DESPERATION  ORIGIN
PID0001   T恤         25.62         100     衣服    促銷產品        北京
PID0002   炒鍋        35.62         100     廚具    促銷產品        北京
PID0003   西瓜        45.62         100     水果    促銷產品        北京
PID0004   鲈魚        55.62         100     魚類    商品描述004     北京
PID0004   鲫魚        75.62         100     魚類    商品描述005     北京
PID0004   草魚        65.62         100     魚類    商品描述006     北京

需求:

把非魚類的產品都標記為99,鲈魚標記為2,非鲈魚的魚類標記為50.

步驟:

第一步:利用嵌套case 語句將非魚類標記為99

(case  when category = '魚類' then   1 else 0  end) = 0 then '99'

第二步:在魚類中,名稱為‘鲈魚’的標記為2

第三步:排除第一第二步之後,剩余的標記為100,也就是非鲈魚的魚類標記為100.

整體的SQL語句如下:

select PRODUCTNAME,
       CATEGORY,
       case
             when (case when category = '魚類' then 1  else 0 end) = 0 then '99'
             when productname = '鲈魚' then '2'
             else '100'
         end category_code
  from PRODUCTINFO

執行結果如下:

PRODUCTNAME    CATEGORY        CATEGORY_CODE
T恤               衣服            99
炒鍋                廚具            99
西瓜                水果            99
鲈魚                魚類            2
鲫魚                魚類            100
草魚                魚類            100            

執行順序說明:

從第一個when條件開始向下執行,如果條件滿足了,則不會執行下面的when條件了。

舉個栗子:

 

select PRODUCTNAME,
       CATEGORY,
       case
             when (case when category = '魚類' then 1 else  0 end) = 0 then '99'
             when productname = '鲈魚' then '2'
             when productname = '西瓜' then '52'
             else '100'
         end category_code
  from PRODUCTINFO

 

你們說西瓜最終的category_code會是什麼捏?會是代碼中的‘52’嗎?

答案是否定的啦,西瓜在第一個when條件語句中,已經被給予了‘99’,就結束了,不會在執行下面的when條件了。 我們看看結果:

PRODUCTNAME    CATEGORY        CATEGORY_CODE
T恤              衣服               99
炒鍋               廚具               99
西瓜               水果               99
鲈魚               魚類               2
鲫魚               魚類               100
草魚               魚類               100                                 

西瓜還是‘99’啦

 

以上

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved