Oracle的sql函数

1. 单行函数
  • 每行只返回一个值
  • 可以出现在select子句和where子句中

(1)日期函数:select sysdate from dual查询当前系统时间
(2)数字函数:select sqrt(100) from dual求100的平方根
(3)字符串函数:select lower('ABC') from dual大写转小写
(4)转换函数:

  1. TO_CHAR():
    select to_char(sysdate,'yyyy"年"MM"月"dd HH24:MI:SS') from dual对象转字符串
    select to_char(12345678,'$999,999,999.00') from dual数字转指定格式字符串
  2. TO_DATE():
    select to_date('2019-01-01','yyyy-MM-dd') from dual字符串转日期格式
  3. TO_NUMBER():
    select to_number('23') from dual字符串转数字

(5)转换空值函数:
select sal,comm,sal+nvl(comm,0) from emp数字加空值为空,nvl如果comm为空则用0参与计算
等价于select nvl2(comm,sal+comm,sal) from emp相当于条件表达式
select decode(to_char(hiredate,'MM'),'01','一月','02','二月','03','三月','三月后') mon from empdecode相当于switch,(to_char(hiredate,‘MM’)=key,‘01’,‘一月’=case:表达式,‘三月后’=default

2. 分组函数
  • 根据分组的情况,返回每组里的一个结果值
  • 可以在order by和having子句中使用
3. 分析函数
  • 根据一组行来计算聚合值
  • 分析函数为每组记录返回多个行
  • 在一组内进行有序的排位,序号从1开始
    select ename,depano,sal,row_number() over (partition by deptno order by sal desc ) as "ROW_NUMBER"不支持并列,序号连续
    select ename,depano,sal,rank() over (partition by deptno order by sal desc ) as "ROW_NUMBER"支持并列,序号会不连续
    select ename,depano,sal,dense_rank() over (partition by deptno order by sal desc ) as "ROW_NUMBER"支持并列排序,序号连续

猜你喜欢

转载自blog.csdn.net/qq_36440298/article/details/88168221