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