1. 程式人生 > >case when 函式的使用例項

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

b.grp_name 
             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。