Oracle中case?when函數(shù)的用法
一、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,可以進(jìn)行子查詢,從而 實(shí)現(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,但是這個(gè)時(shí)候要注意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)文章
Oracle數(shù)據(jù)庫并行查詢出錯(cuò)的解決方法
這篇文章主要介紹了Oracle數(shù)據(jù)庫并行查詢出錯(cuò)的解決方法,需要的朋友可以參考下2014-07-07
Oracle中trunc()函數(shù)實(shí)例詳解
trunc函數(shù)用法用于截取時(shí)間或者數(shù)值,返回指定的值,下面這篇文章主要給大家介紹了關(guān)于Oracle中trunc()函數(shù)詳解的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
Oracle9i數(shù)據(jù)庫異常關(guān)閉后的啟動
Oracle9i數(shù)據(jù)庫異常關(guān)閉后的啟動...2007-03-03
win10 oracle11g安裝報(bào)錯(cuò)問題集合 附解決方法
這篇文章主要為大家總結(jié)了win10 oracle11g安裝報(bào)錯(cuò)問題的產(chǎn)生原因,和oracle安裝報(bào)錯(cuò)的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05

