轉,Oracle——decode函數

來源:互聯網
上載者:User

標籤:日期   相減   ret   table   解釋   bsp   class   acl   months   

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等,也可以省略;

例子:

           顯示僱員姓名、年限工資(以New Salary作為欄位標題)。年限工資的計算方法:從受雇日期起至今滿10年的,工資增加10%;滿20年的,工資增加20%,滿30年的,工資增加30%;其他的不變。

  select ename,decode(trunc(months_between(sysdate,hiredate)/120,0),1,sal*1.1,2,sal*1.2,3,sal*1.3,sal) as "New Salary"  from emp;

補充:

在Oracle中計算兩個日期間隔的天數、月數和年數:

一、天數:

在Oracle中,兩個日期直接相減,便可以得到天數;

select sysdate-to_date(‘2017-10-15‘,‘yyyy-mm-dd‘) from dual;返回結果:1.6...(加上了小時)

二、月數:

計算月數,需要用到months_between函數;

1 --months_between(date1,date2)   2 --如果兩個日期中“日”相同,或分別是所在月的最後一天,那麼返回的結果是整數。否則,返回的結果將包含一個分數部分(以31天為一月計算) 3 select months_between(to_date(‘02/28/2015‘,‘mm/dd/yyyy‘),to_date(‘12/31/2014‘,‘mm/dd/yyyy‘)) "MOTHS" from dual;4 返回結果: 25 select months_between(to_date(‘01/01/2015‘,‘mm/dd/yyyy‘),to_date(‘12/31/2014‘,‘mm/dd/yyyy‘)) "MONTHS" FROM DUAL;      6 返回結果: 0.032258064516129

三、年數:

計算年數,是通過計算出月數,然後再除以12;

1 select trunc(months_between(to_date(‘08/06/2015‘,‘mm/dd/yyyy‘),to_date(‘08/06/2013‘,‘mm/dd/yyyy‘))/12) from dual;2 3 --返回結果:2

轉,Oracle——decode函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.