Oracle CASE WHEN 用法介紹

2021-06-27 02:14:44 字數 2659 閱讀 8548

--

簡單case函式

case ***

when'1

'then'男

'when'2

'then'女

'else'其他

'end

--case搜尋函式

case

when *** ='1

'then'男

'when *** ='2

'then'女

'else'其他

'end

2.1 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;

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 <=

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;

3.1 decode() 函式

select decode(***, '

m', '

male

', '

f', '

female

', '

unknown

')from employees;

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

3.2 在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 用法介紹

簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 2.1 select case when 用法 select grade,count...

Oracle CASE WHEN 用法介紹

簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 2.1 select case when 用法 select grade,count...

Oracle CASE WHEN 用法介紹

簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 2.1 select case when 用法 select grade,count...