SQL中 decode()函數簡介

 decode()函數簡介:

主要作用:將查詢結果翻譯成其他值(即以其他形式表現出來,以下舉例說明);

使用方法:

Select decodecolumnname,值1,翻譯值1,2,翻譯值2,...n,翻譯值n,缺省值)

From talbename

Where …

其中columnname爲要選擇的table中所定義的column

·含義解釋:

decode(條件,1,翻譯值1,2,翻譯值2,...n,翻譯值n,缺省值)的理解如下:

if (條件==1

 then    

return(翻譯值1)

elsif (條件==2

then    

return(翻譯值2)    

......

elsif (條件==n

 then    

return(翻譯值n)

else    

return(缺省值)

end if

注:其中缺省值可以是你要選擇的column name 本身,也可以是你想定義的其他值,比如Other等;

舉例說明:

現定義一table名爲output,其中定義兩個column分別爲monthidvar型)和salenumber型),若sale=1000時翻譯爲D=2000時翻譯爲C=3000時翻譯爲B=4000時翻譯爲A,如是其他值則翻譯爲Other

SQL如下:

Select monthid , decode (sale,1000,'D',2000,'C',3000,'B',4000,'A',’Other’) sale from output

特殊情況:

若只與一個值進行比較

Select monthid ,decodesale NULL‘---’sale sale from output

另:decode中可使用其他函數,如nvl函數或sign()函數等;

NVL(EXPR1,EXPR2)

EXPR1NULL,則返回EXPR2,否則返回EXPR1.

SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1;

如果用到decode函數中就是

select monthid,decode(nvl(sale,6000),6000,'NG','OK') from output

 

sign()函數根據某個值是0、正數還是負數,分別返回01-1

如果取較小值就是

select monthid,decode(sign(sale-6000),-1,sale,6000) from output,即達到取較小值的目的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章