SQL中 decode()函數簡介。本站提示廣大學習愛好者:(SQL中 decode()函數簡介)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL中 decode()函數簡介正文
DECODE函數,是ORACLE公司的SQL軟件ORACLE PL/SQL所供給的特有函數盤算方法,以其簡練的運算方法,可控的數據模子和靈巧的格局轉換而著名。
明天看他人的SQL時看這外面還有decode()函數,之前歷來沒接觸到,上彀查了一下,還挺好用的一個函數,寫上去願望對同伙們有贊助哈!
decode()函數簡介:
重要感化:將查詢成果翻譯成其他值(即以其他情勢表示出來,以下舉例解釋);
應用辦法:
Select decode(columnname,值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分離為monthid(var型)和sale(number型),若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 ,decode(sale, NULL,‘---',sale) sale from output
另:decode中可以使用其他函數,如nvl函數或sign()函數等;
NVL(EXPR1,EXPR2)
若EXPR1是NULL,則前往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、負數照樣正數,分離前往0、1、-1,
假如取較小值就是
select monthid,decode(sign(sale-6000),-1,sale,6000) from output,即到達取較小值的目標。
小結:
感化:將輸出數值與函數中的參數列表比擬較,依據輸出值前往一個對應值。函數的參數列表是由若干數值及其對應成果值構成的若干序偶情勢。固然,假設未能與任何一個實參序偶婚配勝利,則函數也有默許的前往值。 差別於SQL的其它函數,DECODE函數還能辨認和操作空值。
語法:DECODE(control_value,value1,result1[,value2,result2…][,default_result]);
control _value試圖處置的數值。DECODE函數將該數值與前面的一系列的偶序比擬較,以決議前往值。 value1是一構成序偶的數值。假設輸出數值與之婚配勝利,則響應的成果將被前往。對應一個空的前往值,可使用關鍵字NULL於之對應 result1 是一構成序偶的成果值。 default_result 未能與任何一個值婚配時,函數前往的默許值。