Oracle中case用法總結

2021-10-05 09:20:29 字數 2031 閱讀 9330

--case語句的種類:

1.簡單case語句

語法: case exp when comexp then returnvalue

...when comexp then returnvalue

else returnvalue

endcase到end之間相當於乙個具體的值,可以做運算,取別名,巢狀case 等等。

只要把case到end當作乙個運算結果的表示式就可以了。

舉例: select cust_last_name,

case credit_limit when

100then

'low'

when

5000

then

'high'

else

'medium'

endfrom customers;

2.搜尋case語句

語法: case

when

boolean

then

return

value..

.when

boolean

then

return

value

else retur nvalue

end舉例:select

case

when id between

1and

10then

'low'

when id between

20and

30then

'mid'

when id between

40and

50then

'high'

else

'unknow'

endfrom product;

--簡單case和搜尋case之間的區別:

1. 簡單case只能是when後面的表示式完全匹配case後的表示式,相當於 =,所以也不能匹配null。

2. searched case可以作為比較條件,那麼可以使用like、!=、between..

and、<、=、is

null、is

notnull等,比簡單case的使用更加廣泛,完全可以替代簡單case。

--注意事項:

1.case 表示式返回的是乙個確定的value,若前面的都不匹配,則返回else中的項.

2.簡單case 中的表示式,when 後面的表示式型別應該全部保持一致.

3.所有的then 後面的return_value型別要保持一致.

4.對於簡單case 表示式,也就是case 表示式 when…那麼when

null 總是取不到。也就是case 後面的表示式如果值為null,不會與when

null 匹配,只會與else匹配.

5.對於searched case來說,有自動型別轉換,只要條件成立就可以。

如:select

case

when1=

'1'then

1end

from dual; 其中1

='1'條件成立

值得一提的是: sql中的case語句與pl/

sql中的case語句的不同之處:

前者的else不是必須的,如果沒有匹配就返回null

;後者的else不寫,則報case_not_found異常.

--case中巢狀子查詢

case語句中可以使用子查詢,但是必須返回一行,不可以是多行.

如:select

case

(select

count(*

)as s1 from t1 where a =1)

when

(select

count(*

)as s2 from t1, t2 where t1.a = t2.a and t2.a =1)

then

'相等'

else

'不相等'

endfrom dual;

T SQL中Case的用法

case語句是條件判斷語句的一種,可以完成比if語句更強的判斷,可以解決if語句中巢狀過多的問題。語法 case when 條件a then 結果a when 條件b 結果b else 結果n end 和decode 不同的是,decode 只能針對固定的值,而 case 可以用不是固定值,需是乙個...

SQL中Case語句用法

sql中,case具有兩種格式。即簡單case函式和case搜尋函式。下文中筆者與大家一起討論sql中case語句用法。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 t...

sql中case的用法

由於之前沒有用到case,乙個簡單的分類統計問題竟被我group by 又union的整得很麻煩,原來case是可以應用得很靈活的。乙個應用場景如下 乙個表中儲存了使用者 姓名,年齡,性別 要求統計 35歲和 35歲的女使用者和南使用者分別是多少 一共四類 開始我是想著先把 35歲的按性別group...