oracle函式相關

2021-08-26 08:03:30 字數 3171 閱讀 9964

1.nvl

oracle的nvl函式的用法

通過查詢獲得某個欄位的合計值,如果這個值位null將給出乙個預設的預設值

select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1

這裡關心的nvl的用法,nvl(arg,value)代表如果前面的arg的值為null那麼返回的值為後面的value

如: nvl(a,b)就是判斷a是否是null,如果不是返回a的值,如果是返回b的值 通過查詢獲得某個欄位的合計值,如果這個值位null將給出乙個預設的預設值

另乙個有關的有用方法

declare

i integer

select nvl(sum(t.dwxhl),1) into i from tb_jhde t where zydm=-1

這樣就可以把獲得的合計值儲存到變數i中,如果查詢的值為null就把它的值設定為預設的1

2.rownum

rownum是oracle預處理字段,預設標序是1,只有記錄集已經滿足條件後才會進行後續編號。

例如:select rownum,tb.* from tb where rownum>1

3.to_number

to_number函式的格式如下:

to_number(varchar2 or char,』format model』)

to_number函式中也有很多預定義的固定格式:

9代表乙個數字

0強迫0顯示

$顯示美元符號

l強制顯示乙個當地的貨幣符號

.顯示乙個小數點

,顯示乙個千位分隔符號

下面是一些轉換的例子:

sql> select to_number(』rmb234234.4350′,』l999999.0000′) from dual;

to_number(』rmb234234.4350′,』l999999.0000′)

——————————————

234234.435

另乙個例子是:

sql> select to_number(』$123,233,455,623.3400′,』$999,999,999,999.0000′) from dual;

to_number(』$123,233,455,623.3400′,』$999,999,999,999.0000′)

———————————————————-

1.2323e+11

4.to_char

select to_char(to_date('1983-12-11','yyyy-mm-dd'),'dd') from dual;

select to_char(sysdate,'yyyy/mm/dd') from dual;

5.to_date

select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;  

select to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-02-01','yyyy-mm-dd') from dual;

6.trunc

擷取函式並不改變資料型別,即date擷取以後還是date,char擷取以後還是char.

trunc(date,format)

trunc(date,''format'')未指定format時,將日期截為12 a.m.,不考慮是否在中午之前的條件。

且使用精確符,如:select trunc(sysdate,'dd') from dual;精確到天

以下語句可證明型別不變:

select to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd') from dual

minus

select trunc(sysdate,'dd') from dual;

結果是空的。

trunc(for number)

trunc函式返回處理後的數值,其工作機制與round函式極為類似,只是該函式不對指定小數前或後的部分做相應捨入選擇處理,而統統截去。

其具體的語法格式如下

trunc(number[,decimals])

其中:number 待做擷取處理的數值

decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分

下面是該函式的使用情況:

trunc(89.985,2)=89.98

trunc(89.985)=89

trunc(89.985,-1)=80

注意:第二個引數可以為負數,表示為小數點左邊指定位數後面的部分截去,即均以0記。

舉例:

對數字,日期進行的

sql> select trunc(sysdate) from dual;

trunc(sysd

----------

07-1月 -03

sql> select trunc(sysdate,'mm') from dual;

trunc(sysd

----------

01-1月 -03

sql> select trunc(sysdate,'yy') from dual;

trunc(sysd

----------

01-1月 -03

sql> select trunc(234.5565) from dual;

trunc(234.5565)

---------------

234

sql> select trunc(sysdate,'d') from dual;

trunc(sysd

----------

05-1月 -03

select trunc(sysdate ,'dd') from dual ; -- 2007-9-19

select trunc(sysdate ,'yyyy') from dual ; --2007-1-1

select trunc(sysdate ,'mm') from dual ; --2007-9-1

oracle相關函式

大寫的ps oracle儲存過程測試進不去解決方案 重新編譯 trunc sysdate,d 1 表示今天所在周的周一的年月日,如今天是2016.04.21周四,則trunc sysdate,d 1表示2016.04.18周一 select trunc sysdate from dual case ...

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...