Oracle函数

Oracle函数

 

一:函数概述



二:单行函数

(1)日期函数

A、sysdate:日期函数

 

 

B、current_timestamp:获取系统时间

 

 

C、to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'):格式化日期

 

 

D、to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss'):将字符串转换成日期

 

 

E、add_months(sysdate, 2):添加月份

 

 

F、last_day(sysdate):返回日期中指定月的最后一天

 

 

G、months_between(sysdate, add_months(sysdate, 4)):计算两个日期之前相差多少个月

 

 

H、next_day(sysdate, 2):返回下个星期一是哪一天,星期日用数字1表示,以此类推

 

 

I、extract(year from sysdate):用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。yearmonthdayhourminutesecond

 

 

(2)数字函数

A、abs(x):返回x的绝对值

 

 

B、ceil(x) :返回大于等于x的最小整数值

 

 

C、floor(x):返回小于等于x的最大整数值

 

 

D、power(x,y) :返回xy次幂

 

 

E、mod(x,y):返回x除以y的余数

 

 

F、round(x[,y]):返回四舍五入后的值

 

 

G、sqrt(x) :返回x的平方根

 

 

H、trunc(x[,y]) :返回x按精度y截取后的值,y为正,表示保留的小数位数,y为负,小数点左边y位变成0y0或不写取整

 

 

 

 

 

(3)字符函数

A、chr(x):将数字转换成字符

 

 

B、Ascii:将字符转换成数字

 

 

C、Concat:连接字符串

 

 

D、Ltrim:删除左边空格

 

 

E、Rtrim:删除右边空格

 

 

F、Trim:删除两边空格

 

 

G、Upper:转换成大写

 

 

H、replacestringsearch_str[,replace_str]):替换

 

 

I、translate(string,from_str,to_str):替换,和replace相同,但比replace强大。如select translate('abcbbaadef','bad','#@') from dual (b将被#替代,a将被@替代,d对应的值是空值,将被移走)

 

 

J、rpadstring1,x[,string2]):填充/截取到x个长度,不足的话右边用指定字符填充

 

 

K、lpadstring1,x[,string2]):填充/截取到x个长度,不足的话左边用指定字符填充

 

 

L、substrstring,a[,b]):截取子串

 

 

M、Length:求字符串的长度

 

 

(4)转换函数

A、TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'):转换为字符

 

 

B、TO_DATE('2011/03/24', 'YYYY-MM-DD'):转换为日期

 

 

C、TO_NUMBER('2008') AS Year:转换数字

 

 

D、decode():将查询结果翻译成其他值(即以其他形式表现出来),decode(条件,1,翻译值1,2,翻译值2,...n,翻译值n,缺省值)

 

 

 

(5)空值函数

A、NVL(expr1, expr2)expr1NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致

 

 

B、NVL2(expr1, expr2, expr3)expr1不为NULL,返回expr2;为NULL,返回expr3expr2expr3类型不同的话,expr3会转换为expr2的类型

 

 

C、NULLIF (expr1, expr2) expr1expr2相等返回NULL,不等则返回expr1

 

 

 

三:分组函数

(1)分组排序函数

A、row_number() over(partition by col1 order by col2):根据col1分组,再根据每组的col2排序,返回排序序号

 

 

B、rank() over(partition by col1 order by col2)rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)

 

 

C、dense_rank() over(partition by col1 order by col2)dense_rank()也是连续排序,有两个第二名时仍然跟着第三名

 

 

 

四:分析函数

(1)sum函数,统计总和

select earnmonth, area, sum(personincome) from earnings group by earnmonth,area;

 

 

(2)rollup函数:按照月份,地区统计收入

select earnmonth,area, sum(personincome) from earnings group by rollup(earnmonth,area);

 

 

(3)cube函数:按照月份,地区进行收入总汇总

select earnmonth, area, sum(personincome)from earnings group by cube(earnmonth,area)
order by earnmonth,area nulls last;

 

 

(4)grouping函数:语法:grouping(column)判断当前列的值是否则由column产生,只能配合cuberollup使用

Select decode(grouping(earnmonth),1,'所有月份',earnmonth)月份, decode(grouping(area),1,'全部地区',area)地区, sum(personincome)总金额 from earnings group by cube(earnmonth,area) order by earnmonth,area nulls last;

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle中的自定义函数是用户根据自己的需求创建的一种可重复使用的程序单元。通过自定义函数,可以根据输入参数计算并返回一个值。 在Oracle中,创建自定义函数的语法结构如下所示: CREATE [OR REPLACE] FUNCTION 函数名 (参数1 数据类型, 参数2 数据类型, ...) RETURN 返回值类型 AS 声明局部变量、常量等 BEGIN 执行函数体的逻辑操作 可以包含条件判断、循环、异常处理等语句 RETURN 返回值; END; 其中,CREATE关键字用于创建函数,OR REPLACE关键字用于替换已存在的同名函数函数名是自定义函数的名称,可以根据需要自行指定。参数1、参数2等是自定义函数的输入参数,可以根据需要指定参数的数量和数据类型。返回值类型是自定义函数的返回结果的数据类型。 在函数体中,可以进行各种逻辑操作,包括条件判断、循环、异常处理等。最后,通过RETURN关键字将计算结果返回。 下面是一个示例: CREATE OR REPLACE FUNCTION depA2(dep VARCHAR2) RETURN NUMBER AS result NUMBER; BEGIN SELECT COUNT(e.deptno) INTO result FROM SCOTT.dept d LEFT JOIN SCOTT.emp e ON d.deptno = e.deptno WHERE d.dname = dep; RETURN result; END; 在这个示例中,depA2是一个自定义函数,参数dep是部门名称,函数的功能是统计输入部门的员工人数。函数通过查询SCOTT.dept和SCOTT.emp表,计算出符合条件的员工人数,并将结果返回。 要调用自定义函数,可以使用SELECT语句或者直接在其他SQL语句中引用函数名,并传入参数。 例如,要调用上述示例中的函数,可以使用以下语句: SELECT depA2('SALES') FROM dual; 这将返回部门名称为'SALES'的员工人数。 总结起来,Oracle中的自定义函数是根据用户需求创建的可重复使用的程序单元,它可以根据输入参数计算并返回一个值。创建自定义函数的语法结构包括函数名称、输入参数、返回值类型和函数体。调用自定义函数可以使用SELECT语句或在其他SQL语句中引用函数名。 请注意以上回答仅基于提供的参考内容,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值