case when 函式的使用例項
先簡單說點case函式的概念,
case()函式有兩種形式,
第一種: case when 條件1 then 結果1
when 條件2 then 結果2
when 條件3 then 結果3
else 結果3 end;
第二種: case 欄位名
when 條件1 then 結果1
when 條件2 then 結果2
else 結果3 end;
第一種成為case搜尋函式,第二種為case簡單函式,這裡主要講解的是第一種函式的用法,感覺懂了第一種,第二種很好理解。
例項:
case when b.grp_name1 <> '' and a.poi_name like concat('%',b.grp_name1,'%') then
when b.grp_name1 <> '' and a.poi_name1 like concat('%',b.grp_name1,'%') then b.grp_name
else '' end as grp_name
這是工作建表中的一個欄位判斷語句,case when函式關鍵字用紅色標明,sql語句中所判斷的條件有四個,依次判斷b.grp_name1欄位,注意一點的是,當滿足條件一的時候整個判斷結束,也就是說執行流程為看條件1是否滿足,滿足的話則b.grp_name1 = b.grp_name,如果不滿足則執行下一條判斷語句,同上,如果都不滿足的話則執行else後面語句,在這裡即為空。
附帶一個:這裡判斷條件中還用到一個concat()函式,這個函式作用主要是把字串連線起來,這個好處在於,它可以組合欄位名和字串的連線,一般我們在模糊匹配的時候用的最多的就是'%value%',但是當這個value不是一個具體的值,而是一個欄位名的時候這樣方法沒法實現。所以就有了concat('%',value,'%'),這個函式所要連線的欄位中如果有一個為null,則會返回結果null。