Oracle中case?when函數(shù)的用法
更新時間:2022年05月05日 17:20:19 作者:springsnow
這篇文章介紹了Oracle中case?when函數(shù)的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
一、case when 的基本用法見:
二、case when在select語句中的用法
SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 ELSE NULL END) 男生數(shù), COUNT (CASE WHEN sex = 2 THEN 1 ELSE NULL END) 女生數(shù) FROM students GROUP BY grade;
1、在Case函數(shù)中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等。
Case函數(shù)不同于DECODE函數(shù)。在Case函數(shù)中,可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如說使用IN,EXISTS,可以進行子查詢,從而 實現(xiàn)更多的功能。
SELECT keyCol, CASE WHEN keyCol IN ( SELECT keyCol FROM tbl_B ) THEN 'Matched' ELSE 'Unmatched' END Label FROM tbl_A;
也可以使用NOT IN和NOT EXISTS,但是這個時候要注意NULL的情況。
2、根據(jù)條件有選擇的UPDATE。
UPDATE PersonnelSET salary = CASE WHEN salary >= 5000 THEN salary * 0.9 WHEN salary >= 2000 AND salary < 4600 THEN salary * 1.15 ELSE salary END;
三、case when在where語句中的用法
SELECT * FROM TB_Test WHERE stateid IN ( 10, 20 ) AND ( CASE WHEN stateid = 20 AND userid <> 2 THEN 0 ELSE 1 END ) = 1
四、case when在group by 語句中的用法(不常用)
SELECT CASE WHEN salary <= 500 THEN '1' WHEN salary > 500 AND salary <= 600 THEN '2' WHEN salary > 600 AND salary <= 800 THEN '3' 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' ELSE NULL END;
到此這篇關(guān)于Oracle中case when函數(shù)用法的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle9i數(shù)據(jù)庫異常關(guān)閉后的啟動
Oracle9i數(shù)據(jù)庫異常關(guān)閉后的啟動...2007-03-03