oracle004:oracle中的常用函数

  • 函数

1,字符函数

  • initcap();将单词中的第一个字母大写,其他字母变为小写返回
    在这里插入图片描述
  • Lower():将所有字符转小写
    在这里插入图片描述
  • Upper():将所有字符转大写
    在这里插入图片描述
  • Ltrim():去掉左面的特定字符

ltrim(x,y) 函数是按照y中的字符一个一个截掉x中的字符,并且是从左边开始执行的,只要遇到y中有的字符, x中的字符都会被截掉, 直到在x的字符中遇到y中没有的字符为止函数命令才结束

在这里插入图片描述

  • Rtrim():去掉右面的特定字符
    在这里插入图片描述
  • translate(string,from_str,to_str);替换,from_str中出现几个String,to_str最多就能替换几个
    在这里插入图片描述
  • replace():替换字符串
    在这里插入图片描述
  • instr()

instr函数返回要截取的字符串在源字符串中的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。

在这里插入图片描述

  • Substr(): 格式1: substr(string string, int a, int b);截取字符串,从第a个开始,往后截取b个
    或者: 格式2:substr(string , int a) ; 从第a个截取到底
    在这里插入图片描述
  • Concat():字符串拼接
    在这里插入图片描述

2,日期函数:
日期函数对日期值进行运算,生成日期数据类型或数值数据类型的结果

  • add_months ():
    add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为单位的)
    sysdate代表当前日期
    在这里插入图片描述
  • months_between():
    MONTHS_BETWEEN函数返回两个日期之间相差的月份数。
    如果前面日期早,就返回正数,如果前面的日期迟,就返回负数
    在这里插入图片描述
  • last_day:查询一个月的最后一天
    在这里插入图片描述
  • next_day():

指定时间的下一个星期几(由char指定)所在的日期,
char也可用1~7替代,1表示星期日,2代表星期一。。。。
还可以是星期一、星期二。。。星期日

在这里插入图片描述

  • sysdate():当前日期
select next_day(sysdate,1) from dual;

3,数字函数:

  • Abs(n):返回一个数的绝对值
    在这里插入图片描述

  • Ceil(n):向上取整
    在这里插入图片描述

  • Cos(n):cos余弦函数,里面不是多少度,而是几分之π这种类型
    在这里插入图片描述

  • cosh(n):返回输入值的反余弦值
    在这里插入图片描述

  • floor(n):去小于等于数值n的最大整数
    在这里插入图片描述

  • power(m,n):求m的n次方
    在这里插入图片描述

  • mod(m,n):取余
    在这里插入图片描述

  • round(m,n):将m四舍五入,保留n位有效数字
    在这里插入图片描述

  • trunc(m,n):Oracle中的trunc()函数是对时间类型或者数字进行截取操作的

  • 它的截取是以小数点为间隔,1就是小数点后1为,0就是只要整形,-1就是小数点左面的整数个位换成0

在这里插入图片描述

  • sqrt(n):开方
    在这里插入图片描述

  • sign(n): 若n=0,则返回0,否则,n>0,则返回1,n<0,则返回-1
    在这里插入图片描述
    4,转换函数

  • to_char()转成字符串
    在这里插入图片描述
    其他用法:
    在这里插入图片描述

  • to_date():转成日期类型
    在这里插入图片描述

  • to_number();转数字
    在这里插入图片描述

5,分析函数:

  • 分析各个部门工资最高的两个人:
    Over():oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。

Row_num():row_number() 别名获得排名 ,比用rownum伪列要简单方便的多;因为伪列总是从一开始查找;

select empno,ename,sal,sum(sal) over() from emp;

按照常理来说,sum(sal)对于每一列的数据是不能统计的,因为它统计出来的数据是一个值,但是加上over()就可以把它的统计数据给每一列。
在这里插入图片描述
这样只是把所有人的工资数统计出来给了每一列,但是还要根据部门分组

select empno,ename,sal,sum(sal) over(order by sal) from emp;

在这里插入图片描述
这样是每一行统计一次

select a.* from
(select deptno,ename,sal,row_number() over(partition by deptno order by sal desc)as xx from emp)a
 where xx<=2

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值