mysql中實現 orcale的decode函式
阿新 • • 發佈:2019-02-01
一:業務場景
一次在用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 表名稱