?第一種:簡(jiǎn)單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)相同的功能设江。簡(jiǎn)單Case函數(shù)的寫法相對(duì)比較簡(jiǎn)潔忿晕,但是和Case搜索函數(shù)相比钞它,功能方面會(huì)有些限制,比如寫判斷式虹脯。
還有一個(gè)問題,Case函數(shù)只返回第一個(gè)符合條件的值,剩下的Case部分將會(huì)被自動(dòng)忽略亭畜。如下面這個(gè)例子:
CASE col
WHEN col_1 IN ( 'a', 'b') THEN '第一類'
WHEN col_1 IN ('a')? ? ? THEN '第二類'
ELSE'其他' END
這個(gè)語句中,滿足條件a永遠(yuǎn)不會(huì)返回第二類迎卤,因?yàn)榘错樞虬l(fā)現(xiàn)a在第一類的時(shí)候查詢就已經(jīng)結(jié)束了拴鸵。所以case無法用于一個(gè)東西在一個(gè)分類里有不同的屬性的條件。
case when 好處很明顯就是非常易于看懂蜗搔,相比實(shí)現(xiàn)同樣條件用復(fù)雜的自連接查詢劲藐,在邏輯上很容易看懂(自連接查詢?cè)诓煌那闆r下可能會(huì)有BUG)。