MySql case when 語句,用于計(jì)算條件列表并返回多個可能結(jié)果表達(dá)式之一。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、雞西梨樹網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價格優(yōu)惠性價比高,為雞西梨樹等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
通常在 sql查詢 中使用,也可在 sql更新 中使用。
else不是必須的,比如下面的例子
表 t_student
實(shí)現(xiàn) : 大于95分,評價 甲 ;大于90分小于95分,評價 乙 ;否則為 丙
簡單 CASE 函數(shù):
CASE?input_expression
WHEN?when_expression?THEN?result_expression
[?...n?]
[?
ELSE?else_result_expression
END
CASE 搜索函數(shù):
CASE????
WHEN?Boolean_expression?THEN?result_expression
[?...n?]
[?
ELSE?else_result_expression
END
比如:
第一種用法:
SELECT?name,
CASE?WHEN?birthday??'1981'?THEN?'old'?
WHEN?birthday??'1988'?THEN?'yong'
ELSE?'ok'?END?YORN
FROM?lee
第二種用法:
SELECT?NAME,?CASE?name
WHEN?'sam'?THEN?'yong'
WHEN?'lee'?THEN?'handsome'
ELSE?'good'??END?as?oldname
FROM?lee
第一種:簡單Case函數(shù)?
? ? ? ? ? case 列名
when ? 條件值1 ? then ?選擇項(xiàng)1
when ? 條件值2 ? ?then ?選項(xiàng)2.......
else ? ? 默認(rèn)值 ? ? ?end
第二種:Case搜索函數(shù)
? ? ? ? ? case ?
when ?列名= 條件值1 ? then ?選擇項(xiàng)1
when ?列名=條件值2 ? ?then ?選項(xiàng)2.......
else ? ?默認(rèn)值 end
比較: 兩種格式,可以實(shí)現(xiàn)相同的功能。簡單Case函數(shù)的寫法相對比較簡潔,但是和Case搜索函數(shù)相比,功能方面會有些限制,比如寫判斷式。
還有一個問題,Case函數(shù)只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。如下面這個例子:
CASE col
WHEN col_1 IN ( 'a', 'b') THEN '第一類'
WHEN col_1 IN ('a')? ? ? THEN '第二類'
ELSE'其他' END
這個語句中,滿足條件a永遠(yuǎn)不會返回第二類,因?yàn)榘错樞虬l(fā)現(xiàn)a在第一類的時候查詢就已經(jīng)結(jié)束了。所以case無法用于一個東西在一個分類里有不同的屬性的條件。
case when 好處很明顯就是非常易于看懂,相比實(shí)現(xiàn)同樣條件用復(fù)雜的自連接查詢,在邏輯上很容易看懂(自連接查詢在不同的情況下可能會有BUG)。