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