oracle相關函式

2022-05-01 13:06:10 字數 1968 閱讀 2339

(大寫的ps:oracle儲存過程測試進不去解決方案:重新編譯;)

trunc(sysdate, 'd') + 1   ////表示今天所在周的周一的年月日,如今天是2016.04.21周四,則trunc(sysdate, 'd') + 1表示2016.04.18周一

select trunc(sysdate) from dual;

case when 1>0 then 1 else 0 end  ////表示當1>0條件滿足時取1,否則取0

select (case when 1>2 then 3 when 4>5 then 6 when 7<8 then 9 else 10 end) from dual; --結果為9;多個when條件,且else可省略;

to_char(sysdate, 'yyyymmdd')   ////得到字串"2016/04/21" ps:把日期或數字轉換成字串(to_char的結果和to_number結果可計算)

to_date('2018-12-12','yyyy-mm-dd') --可把字串按指定格式轉換成date型別,一般比較日期,要麼把日期轉換成字串或數字,要麼把字串轉換成日期,兩者相同型別才能比較;

months_between(date1,date2)   ////返回兩個日期之間的月份數

select a.*,b.* from a,b where a.id=b.id(+)   ///加號在「=」右邊表示左連(left join)  相當於select a.*,b.* from a left join b on a.id=b.id   a為主表

dense_rank()over(order by 列名排序)的結果是連續的,如 1 1 1 2

||  字串連線符比如:'aaa' || 'bbb'= 'aaabbb'

execute immediate,一般用於儲存過程中執行動態sql,表不存在可能會報錯

substr(字串,擷取開始位置,擷取長度) //返回擷取的字

instr('源字串' , '目標字串' ,'開始位置','第幾次出現') (ps:在oracle中比like效率更高)

nvl(a,b),當a不為null時返回a,當a為null時返回b。  nvl(remarks,' ')<>' '   判斷欄位不為null和空,length(remarks)>1,可能會導致語句執行時間過長

rpad函式從右邊對字串使用指定的字元進行填充

rpad('tech', 7); 將返回'tech '

rpad('tech', 2); 將返回'te'

rpad('tech', 8, '0'); 將返回'tech0000'

round(x,y)   ////x,y,數字型表示式,如果y不為整數則擷取y整數部分,如果y>0則四捨五入為y位小數,如果y小於0則四捨五入到小數點向左第y位

extract(month from sysdate)  --獲取當前時間的月份   等價於to_char(sysdate,'mm')

extract(year from sydate) --獲取當前時間的年份  等價於to_char(sysdate,'yyyy')

extract(day from sysdate) --返回當前時間的日   等價於to_char(sysdate,'dd')

exists 和in

1) select * from t1 where exists(select 1 from t2where t1.a=t2.a) ;

t1資料量小而t2資料量非常大時,t1<2) select * from t1 where t1.a in (select t2.a fromt2) ;

t1資料量非常大而t2資料量小時,t1>>t2 時,2) 的查詢效率高。

decode('x','b','c','d','e',0)  ----當x=b時得到c,當x=d時得到e,當x <>b and x<>d時得到0;

oracle函式相關

1.nvl oracle的nvl函式的用法 通過查詢獲得某個欄位的合計值,如果這個值位null將給出乙個預設的預設值 select nvl sum t.dwxhl 1 from tb jhde t where zydm 1 這裡關心的nvl的用法,nvl arg,value 代表如果前面的arg的值...

Oracle的相關函式

字串操作函式 1 concat p1,p2 字串連線函式 2 length p1 求長度 3 lpad p1,n,p2 從左邊填充,即p1字串,在n個長度中右對齊,剩下的長度用p2填充 lpad aaa 5,aaa 4 rpad p1,n,p2 同上 5 lower upper 大小寫 6 init...

Oracle 日期函式相關

1 獲取當前日期 不要想著用now 那是mysql裡面用的,oracle需要使用sysdate select sysdate from dual2 格式轉化 字串 日期 select to date 2017 01 12 yyyy mm dd hh24 mi from dual日期 字串 selec...