CASE表達(dá)式可以在SQL中實(shí)現(xiàn)if-then-else型的邏輯,而不必使用PL/SQL。CASE的工作方式與DECODE()類似,但應(yīng)該使用CASE,因?yàn)樗cANSI兼容。 注意點(diǎn): 1、以CASE開頭,以END結(jié)尾 2、分支中WHEN后跟條件,THEN為顯示結(jié)果 3、ELSE為除此之外的默認(rèn)情況,類似于高級(jí)
CASE表達(dá)式可以在SQL中實(shí)現(xiàn)if-then-else型的邏輯,而不必使用PL/SQL。CASE的工作方式與DECODE()類似,但應(yīng)該使用CASE,因?yàn)樗cANSI兼容。
注意點(diǎn):
1、以CASE開頭,以END結(jié)尾
2、分支中WHEN后跟條件,THEN為顯示結(jié)果
3、ELSE為除此之外的默認(rèn)情況,類似于高級(jí)語言程序中switch case的default,可以不加
4、END后跟別名
CASE有兩種表達(dá)式:
1.簡單CASE表達(dá)式,使用表達(dá)式確定返回值.
語法:
CASE search_expression
WHEN expression1 THEN result1
WHEN expression2 THEN result2
…
WHEN expressionN THEN resultN
ELSE default_result
END
例:
select product_id,product_type_id,
case product_type_id
when 1 then ‘Book’
when 2 then ‘Video’
when 3 then ‘DVD’
when 4 then ‘CD’
else ‘Magazine’
end
from products
結(jié)果:
PRODUCT_ID PRODUCT_TYPE_ID CASEPROD
———- ————— ——–
1?????????????? 1???????????????????????????? Book
2?????????????? 1???????????????????????????? Book
3?????????????? 2????????????????????????????? Video
4?????????????? 2???????????????????????????? Video
5?????????????? 2???????????????????????????? Video
6?????????????? 2??????????????????????????? Video
7?????????????? 3???????????????????????????? DVD
8?????????????? 3???????????????????????????? DVD
9?????????????? 4????????????????????????????? CD
10?????????????? 4?????????????????????????????? CD
11?????????????? 4???????????????????????????? CD
12??????????????????????????????????????????? Magazine
12 rows selected.
2.搜索CASE表達(dá)式,使用條件確定返回值.
語法:
CASE
WHEN condition1 THEN result1
WHEN condistion2 THEN result2
…
WHEN condistionN THEN resultN
ELSE default_result
END
例:
select product_id,product_type_id,
case
when product_type_id=1 then ‘Book’
when product_type_id=2 then ‘Video’
when product_type_id=3 then ‘DVD’
when product_type_id=4 then ‘CD’
else ‘Magazine’
end
from products
結(jié)果與上相同.