天天看點

Oracle常用系統内置函數

to_char();–轉換為字元串

to_number();–轉換為數值類型

to_date();–轉換為日期類型

1、常用數學運算函數

abs(value) : 傳回value的絕對值

ceil(value) :傳回大于或等于value的最小整數

cos(value) : 傳回value的餘弦值

floor(value) : 傳回等于或小于value的最大整數

mod(value1,value2) : 傳回value1除以value2的餘數

power(value,e) : 傳回value的e次幂

round(value,precision) : 保留precision位小數對value進行四舍五入

sign(value) : 如果value是正則傳回1,是負則傳回-1,否則傳回0.

sqrt(value) : 傳回value的平方根。

trunc(value,precision) : 是一個截取函數,如果precision為正,則往小數點右邊截取precision位,為負則往左邊截取precision位。

2、常用字元串函數

length(value) : 傳回value的長度,value可以是字元串、數字或表達式

lower(value) : 把給定字元串value變為小寫

upper(value) : 把給定字元串value變為大寫

lpad(string,length[,padding]) : 在string左邊填充padding,直到string的長度達到length,如果不指定padding,則預設填充空格

rpad(string,length[,padding]) : 在string右邊填充padding,知道string的長度達到length,如果不指定padding,則預設填充空格

ltrim(string[,trimValue]) : 從左邊删除trimValue,如果不指定trimValue則删除空格

rtrim(string[,trimValue]) : 從右邊删除trimValue,如果不指定trimValue則删除空格

string1 || string2 : 連接配接兩個字元串為一個字元串

initcap(string) : 将字元串的首字母大寫

replace(String,src,dest) : 将string中的src用dest代替

substr(string,start[,count]) : 從start位置開始在string中截取count個字元,如果沒有指定count,則截取到末尾

3、統計函數

avg([distinct] columnName) : 傳回columnName中所有值的平均值,若使用distinct則傳回所有不同的非空值的平均值

count([distinct] value) : 統計記錄數,若使用distinct則隻統計不同的非空數值。value可以是字段名也可以是表達式

max(columnName) : 傳回columnName中的最大值

min(columnName) : 傳回columnName中的最小值

sum(columnName) : 傳回columnName中各值的總和

4、常用日期函數

add_months(date,number) : 傳回date之後number個月的日期

last_day(date) : 傳回date所在月份的最後一天

months_between(date1,date2) :傳回date2減去date1之後的月數

next_day(date,’day’) : 傳回date後的day所在的日期,其中day表示全稱的星期,如Monday

round(date,’format’) : 把date四舍五入到指定的format格式

to_char(date,’format’) : 将日期date轉換為format格式的字元串

to_date(string,’format’) : 将字元串string按照format轉換成日期形式

to_timestamp(string,’format’):将字元串string按照format轉換成時間戳

trunc(date):将日期date的時分秒都設為0

另附幾個數字跟日期互相轉換的自定義函數:

Sql代碼:

–create function 數字轉日期

create or replace function FN_NUMBER_TO_DATE(timeInMillis in number) return date is

Result date;

begin

Result := to_date(‘1970-01-01 00:00:00’, ‘yyyy-MM-dd hh24:mi:ss’) +

timeInMillis / (24 * 60 * 60 * 1000);

return(Result);

end FN_NUMBER_TO_DATE;

–create function 取到幾天以前的日期

create or replace function FN_DAYS_AGO(dest in date, days in number) return date is

Result date;

timeInMillis number;

begin

timeInMillis := FN_DATE_TO_NUMBER(dest) - days*24*60*60*1000;

Result := FN_NUMBER_TO_DATE(timeInMillis);

return(Result);

end FN_DAYS_AGO;

–create function 日期轉數字

create or replace function FN_DATE_TO_NUMBER(inDate in date) return number is

Result number;

begin

Result := (inDate-to_date(‘1970-01-01’, ‘yyyy-MM-dd’)) * 24*60*60*1000;

return(Result);

end FN_DATE_TO_NUMBER;