Oracle資料庫CASE WHEN控制語句使用例子

來源:互聯網
上載者:User

簡單CASE運算式,使用運算式確定傳回值.

文法:

 代碼如下 複製代碼

CASE search_expression

WHEN expression1 THEN result1

WHEN expression2 THEN result2

...

WHEN expressionN THEN resultN

ELSE default_result

搜尋CASE運算式,使用條件確定傳回值.

文法:

 代碼如下 複製代碼

CASE

WHEN condition1 THEN result1

WHEN condistion2 THEN result2

...

WHEN condistionN THEN resultN

ELSE default_result

END

1. CASE WHEN 運算式有兩種形式

--簡單Case函數 

 代碼如下 複製代碼

CASE sex 
WHEN '1' THEN '男' 
WHEN '2' THEN '女' 
ELSE '其他' END 


--Case搜尋函數 

CASE
WHEN sex = '1' THEN '男' 
WHEN sex = '2' THEN '女' 
ELSE '其他' END 

 

2. CASE WHEN 在語句中不同位置的用法
2.1 SELECT CASE WHEN 用法

select 與 case結合使用最大的好處有兩點,一是在顯示查詢結果時可以靈活的組織格式,二是有效避免了多次對同一個表或幾個表的訪問。下面舉個簡單的例子來說明。例如表 students(id, name ,birthday, sex, grade),要求按每個年級統計男生和女生的數量各是多少,統計結果的表頭為,年級,男生數量,女生數量。如果不用select case when,為了將男女數量並列顯示,統計起來非常麻煩,先確定年級資訊,再根據年級取男生數和女生數,而且很容易出錯

 代碼如下 複製代碼
SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1為男生,2位女生*/
                       ELSE NULL
                       END) 男生數,
                COUNT (CASE WHEN sex = 2 THEN 1
                       ELSE NULL
                       END) 女生數
    FROM students GROUP BY grade;

 
 

2.3 WHERE CASE WHEN 用法

 代碼如下 複製代碼
 
SELECT T2.*, T1.*
   FROM T1, T2
  WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
                   T1.SOME_TYPE LIKE 'NOTHING%'
                THEN 1
              WHEN T2.COMPARE_TYPE != 'A' AND
                   T1.SOME_TYPE NOT LIKE 'NOTHING%'
                THEN 1
              ELSE 0
           END) = 1
 

 

2.4 GROUP BY CASE WHEN 用法

 代碼如下 複製代碼
SELECT
CASE WHEN salary <= 500 THEN '1' 
WHEN salary > 500 AND salary <= 600  THEN '2' 
WHEN salary > 600 AND salary <= 800  THEN '3' 
WHEN salary > 800 AND salary <= 1000 THEN '4' 
ELSE NULL END salary_class, -- 別名命名
COUNT(*) 
FROM    Table_A 
GROUP BY 
CASE WHEN salary <= 500 THEN '1' 
WHEN salary > 500 AND salary <= 600  THEN '2' 
WHEN salary > 600 AND salary <= 800  THEN '3' 
WHEN salary > 800 AND salary <= 1000 THEN '4' 
ELSE NULL END; 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.