(大寫的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...