欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle——09常用系统内置函数

程序员文章站 2022-05-08 21:53:44
...

 


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

 

另附几个数字跟日期互相转换的自定义函数:

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