a) lower, 将所有字母小写 b) upper, 将所有字母大写 c) initcap, 所有单词首字母大写
查询所有员工的姓名, 分别显示小写, 大写和首字母大写
select ename, lower(ename), upper(ename), initcap(ename) from emp;
在 Oracle 中, 提供了一个虚拟表格, 叫 dual, 专门用于进行测试, 可以从daul 中查询任何数据
用于计算字符串的长度
a) 查询所有员工的姓名及姓名的长度
select ename, length(ename) from emp;
b) 查询所有姓名长度为 5 的员工的信息
select * from emp where length(ename)=5;
1.3 replace
用于进行字符串的替换
a) 查询所有员工的姓名, 将 A 替换为 a
select ename, replace(ename, 'A', 'a') from emp;
1.4 substr
用于进行字符串的截取
a) 查询所有员工的姓名, 并显示姓名的前 3 个字母
select ename, substr(ename, 1, 3) from emp;
b) 查询所有员工的姓名, 并显示姓名的后 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;
1.1 ceil
向上取整
select ceil(123.0000001) from dual;
1.2 floor
向下取整
select floor(123.9999999) from dual;
1.3 round
四舍五入 第二个参数可以控制四舍五入的位数, 正数表示小数点后, 负数表示小数点前.
select round(156.9444449, -2) from dual;
1.4 trunc
截断,对数字不进行以上处理
select trunc(123.456, 1) from dual;
3.1 sysdate 获取系统时间
select sysdate from dual;
3.2 months_between
计算两个日期间的月数
a) 查询所有员工的入职的月数
select ename, months_between(sysdate, hiredate) from emp;
3.3 add_months
给日期加减月数
select sysdate, add_months(sysdate, -5) from dual;
3.4 last_day
计算给定日期所在月份的最后一天是哪个日期
select sysdate, last_day(sysdate) from dual;
3.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;
4.2 to_date
将字符串转换为日期
select to_date('2022-12-12 23:20:20', 'YYYY-MM-DD HH24:MI:SS') from dual;
4.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;
5.2 nvl2
有三个参数, 如果第一个参数不为空, 则使用第二个参数, 如果为空, 则使用第三个参数
select ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;
5.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;
6.2 avg
求平均值
查询平均工资
select avg(sal) from emp;
6.3 max
求最大值
统计公司的最高工资
select max(sal) from emp;
6.4 min
求最小值
统计公司的最低工资
select min(sal) from emp;
6.5 count
计数
统计公司的员工总数
select count(empno) from emp;
select count(*) from emp;