1. 程式人生 > >mysql中實現 orcale的decode函式

mysql中實現 orcale的decode函式

一:業務場景

    一次在用union all 查詢多個表中需要對多個表的資料彙總,同時還要區份各個表的資料來源,就用到下面我們說的那兩個方法

 一:先說orcale的翻譯方法

    orcale中的decode()函式給我們提供了很方便的翻譯

       select    DECODE(欄位名稱a,val,翻譯1,翻譯2)  as test FROM  表名稱 ;解釋:如果欄位a的值是val,那麼翻譯後的值是翻譯1,否則值為翻譯2

       select  DECODE(欄位名稱a,val1,翻譯1,val2,翻譯2,......) as test FROM  表名稱; 解釋:如果欄位a的值是val1,那麼翻譯後的值是1,如果欄位a的值是val2,那麼飯以後的值是2,一次類推

二:MySQL的翻譯方法

    由於mysql沒有decode()函式,因此我們只能自己手動寫

    select  

        case

        when  欄位a = val1  then  翻譯1

        when  欄位a = val2  then  翻譯2

        when  欄位a = val3  then  翻譯3

        end  as   test

        from 表名稱

        解釋:如果欄位a的值是val1,那麼翻譯後的值是翻譯1,一次類推

三:給查詢虛擬欄位設定預設值

    使用場景: 查詢時候需要設定一個虛擬欄位來標識狀態,同時還要給這個狀態設定一個虛擬值

        select  "D" as  虛擬欄位  from  表名稱