oracle之 case when 的用法

2021-06-22 01:52:18 字數 3076 閱讀 2642

oracle case when的用法 

select col1, col2, 

case 

when col3 > 1 and col3 <2 

then '1' 

when col3 > 2 and col3 <3 

then '2' 

when col3 > 3 and col3 <4 

then '3' 

else '4' 

end mylevel 

from table1 

注意點: 

1、以case開頭,以end結尾 

2、分支中when 後跟條件,then為顯示結果 

3、else 為除此之外的預設情況,類似於高階語言程式中switch case的default,可以不加 

4、end 後跟別名 

表示式有兩種表達方式:

--

簡單case函式

case ***

when'1

'then'男

'when'2

'then'女

'else'其他

'end

--case搜尋函式

case

when *** ='1

'then'男

'when *** ='2

'then'女

'else'其他

'end

select case when 用法

select   grade, count (case

when *** =

1then

1/*

*** 1為男生,2位女生

*/else

null

end) 男生數,

count (case

when *** =

2then

1

else

null

end) 女生數

from students group

by grade;

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

group by case when 用法

select

case

when salary <=

500then'1

'when salary >

500and salary <=

600then'2

'when salary >

600and salary <=

800then'3

'when salary >

800and salary <=

1000then'4

'else

null

end salary_class, --

別名命名

count(*)

from table_a

group

bycase

when salary <=

500then'1

'when salary >

500and salary <=

600then'2

'when salary >

600and salary <=

800then'3

'when salary >

800and salary <=

1000then'4

'else

null

end;

decode() 函式

select decode(***, '

m', '

male

', '

f', '

female

', '

unknown

')from employees;

貌似只有oracle提供該函式,而且不支援ansi sql,語法上也沒case when清晰,個人不推薦使用。

在where中特殊實現

select t2.*, t1.*

from t1, t2

where (t2.compare_type ='a

'and t1.some_type like

'nothing%

') or

(t2.compare_type !='a

'and t1.some_type not

like

'nothing%

')

這種方法也是在特殊情況下使用,要多注意邏輯,不要弄錯。

ORACLE關於case when語句

其中,最好玩和最有用的是oracle裡面的case when then else end語句,剛開始學的時候還是懵懂懵懂的,不是很懂,後來老師給了很多關於oracle的作業,做著做著慢慢就懂了很多,下面我來講幾個例子。1 題目 統計列印各科成績,各分數段人數 課程id,課程名稱,100 85 85 ...

Oracle中case when的用法

最早接觸case when是在行列轉的時候,資料庫中最難的就是各種的查詢,此次的業務需要匯出excel,匯出的內容包含了很多的字段,各種聯合查詢,還有需要計算 分組聯合等。歷經整整一下午終於以近兩百行結束了這個業務。特記錄對於case when的用法,歡迎各位朋友指正,不喜勿噴。首先case whe...

行列互轉之case when

檢視資料結構 select from emp select ename,sal,deptno from emp 行轉列,case when和max 函式 select ename,max case deptno when 10 then sal end d10,max case deptno whe...