字符函数_数值函数_日期函数_转换函数_通用函数_分组函数
1.字符函数
1.lower, upper, initcap
- lower, 将所有字母小写
- upper, 将所有字母大写
- initcap, 所有单词首字母大写
查询所有员工的姓名, 分别显示小写, 大写和首字母大写
select ename, lower(ename), upper(ename), initcap(ename) from emp;
2.length
用于计算字符串的长度
- 查询所有员工的姓名及姓名的长度
select ename, length(ename) from emp;
- 查询所有姓名长度为5的员工的信息
select * from emp where length(ename)=5;
3.replace
用于进行字符串的替换
- 查询所有员工的姓名, 将A替换为a
select ename, replace(ename, 'A', 'a') from emp;
4.substr
用于进行字符串的截取
- 查询所有员工的姓名, 并显示姓名的前3个字母
select ename, substr(ename, 1, 3) from emp;
- 查询所有员工的姓名, 并显示姓名的后3个字母
select ename, substr(ename, length(ename)-2, 3) from emp;
- 第三个参数可以省略, 表示一直截取到末尾, 所以可以简写为:
select ename, substr(ename, length(ename)-2) from emp;
- 第二个参数可以是负数, 表示倒着截取, 又可以简写为:
select ename, substr(ename, -3) from emp;
2.数值函数
1.ceil
向上取整
select ceil(113.0000001) from dual;
2.floor
向下取整
select floor(223.9999999) from dual;
3.round
四舍五入
第二个参数可以控制四舍五入的位数, 正数表示小数点后, 负数表示小数点前
select round(156.9444449, -2) from dual;
4.trunc
截断小数位,后面那个1是指定截断小数位数,默认0位
select trunc(123.456, 1) from dual;
3.日期函数
1.sysdate
获取系统时间
select sysdate from dual;
2.months_between
计算两个日期间的月数
- 查询所有员工的入职的月数
select ename, months_between(sysdate, hiredate) from emp;
3.add_months
给日期加减月数
select sysdate, add_months(sysdate, -6) from dual;
4.last_day
计算给定日期所在月份的最后一天是哪个日期
select sysdate, last_day(sysdate) from dual;
5.next_day
基于给定日期计算下个给定的星期几是什么日期
select sysdate, next_day(sysdate, '星期一') from dual;
4.转换函数
用于在不同数据类型间进行转换. 数值类型, 字符串类型, 日期类型
1.to_number
将字符串转换为数字. 涉及到钱的时候,
$123,123,123.00-123123123.00
select to_number('¥123,123,123.00', 'L999,999,999.00')+1 from dual;
2. to_date
将字符串转换为日期
select to_date('2022-12-12 23:20:20', 'YYYY-MM-DD HH24:MI:SS') from dual;
3.to_char
将数字或日期转换为字符串
select to_char(1231231231, 'L999,999,999,999.99') from dual;
select sysdate, to_char(sysdate, 'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;
5.通用函数
1.nvl
用来处理空值, 如果某个字段为空, 则使用对应的数据进行替换
注意: 两者的数据类型必须一致
- 查询所有员工的姓名, 工资, 提成和总工资(工资+提成)
select ename, sal, comm, sal+nvl(comm, 0) total from emp;
2.nvl2
有三个参数, 如果第一个参数不为空, 则使用第二个参数, 如果为空, 则使用第三个参数
select ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;
3.decode
类似于switch…case…,
查询所有的职位, 并显示对应的中文描述
select distinct job, decode(job, 'CLERK', '职员', 'SALESMAN', '销售', 'PRESIDENT', '董事长', 'MANAGER', '经理', 'ANALYST', '分析师') job_zh from emp;
6.分组函数(聚组函数)
1.sum
求和
查询所有员工的工资总和
select sum(sal) from emp;
2.avg
求平均值
查询平均工资
select avg(sal) from emp;
3.max
求最大值
统计公司的最高工资
select max(sal) from emp;
4.min
求最小值
统计公司的最低工资
select min(sal) from emp;
5.count
计数
统计公司的员工总数
select count(empno) from emp;
select count(*) from emp;