1.字符函数
1.常用字符函数
2.大小写控制函数
2.数值函数
2.1常用数值函数
2.2四舍五入-- round
2.3 截取 – trunc
2.4取余数-- mod
2.5实例
------------------常用数值函数------------------------
– 四舍五入函数round 查询日薪并四舍五入到小数点后2位
select empno, ename, round(sal/30,2) from emp;
– 截断函数trunc 查询日薪并截取到小数后2位
select empno, ename, trunc(sal/30,2) from emp;
– 求余函数mod 查询编号为偶数的员工
select * from emp where mod(empno,2)=0;
3.日期时间函数
3.1常用日期时间函数
3.2日期时间函数-- sysdate
3.3日期时间函数-- months_between
3.4日期时间函数–add_months
3.5日期时间函数–next_day
3.6日期时间函数–last_day
3.7日期时间函数–round
3.8日期时间函数–trunc
实例
-----------------日期时间函数---------------------
– sysdate 查询系统当前时间前一天,现在时间,后一天
select sysdate-1, sysdate, sysdate from dual;
– months_between 计算员工入职多长时间并四舍五入到天
select empno, ename, round(months_between(sysdate,hiredate)) from emp where empno = 7369;
– months_between 计算员工入职多长时间并四舍五入到月
select empno, ename, round(months_between(sysdate,hiredate)/12) from emp where empno = 7369;
– add_months 查询每位员工入职30年之后的年份
select empno, ename, add_months(hiredate,30*12) from emp;
– next_day 查询下周一的日期
select next_day(sysdate,‘星期一’) from dual;
– last_day 查询当前月最后一天
select last_day(sysdate) from emp;
– round 四舍五入查询离职日期年月
select hiredate, round(hiredate,‘year’), round(hiredate,‘month’) from emp;
– trunc 截取离职日期年月
select hiredate, trunc(hiredate,‘year’), trunc(hiredate,‘month’) from emp;
3.9获取系统日期处理
当前日期:sysdate
当前日期前一天:sysdate - interval’1’ day
4.转换函数
4.1自动转换的数据类型
4.2数据转换图解
4.3 日期转字符–to_char
4.3数字转字符–to_char
4.4转日期–to_date
4.5转数据–to_number
实例
-----------------------转换函数------------------------------------
– 日期转字符串to_char 查询离职日期按指定格式输出
select ename, to_char(hiredate,‘YYYY-MM-DD’) from emp;
select ename, to_char(hiredate,‘yyyy-mm-dd’) from emp;
select ename, hiredate, to_char(hiredate,‘yyyy"年"mm"月"dd"日"’) from emp;
select ename, hiredate, to_char(hiredate,‘DD-MON-RR’,‘NLS_DATE_LANGUAGE=AMERICAN’) FROM EMP;
– 数字转字符to_char 将数值转成字符
select ename, to_char(sal,‘L999,999,999,99’) from emp;
select ename, to_char(sal,’$999,999,999,99’) from emp;
select ename, to_char(sal,‘L000,000,000,00’) from emp;
select ename, to_char(sal,’$000,000,000,00’) from emp;
– 转日期to_date 查询1982年之后入职的员工信息
select ename, hiredate from emp where hiredate > to_date(‘1981-12-31’,‘yyyy-mm-dd’);
select * from emp ;
– 转数字to_number
select ename, sal from emp where sal > to_number(‘¥1600’,‘L9999999999999’);
select ename, sal from emp where sal > to_number(’$1600’,’$999999999999’);
5.通用函数
5.1常用的通用函数
5.2处理null
5.2 nvl
5.3 nvl2
5.4 nullif
5.5 coalesce
实例
--------------------通用函数----------------------
– nvl 处理null
select ename, sal, comm, nvl(sal+comm, sal) from emp;
– nvl2 处理null
select ename, sal, comm, nvl2(comm,sal+comm,sal) from emp;
– nullif 查询所有员工入职日期,并把本月初入职的员工与其他员工进行区分
select ename, hiredate, nullif(hiredate, trunc(sysdate,‘month’)) from emp;
– coalesce 查询工资加补助在一起的结果,补助为null,就显示工资
select ename, sal, comm, coalesce(sal+comm,sal) from emp;
6.条件表达式
6.1常用的条件表达式
6.2 表达式–case
6.3 表达式–decode
实例
------------------条件表达式--------------------
– case表达式
– 想要显示全部雇员的职位,但是这些职位要求替换为中文显示
– clark:办事员 salesman:销售 manager:经理 analyst:分析员 president:总裁
select ename,
case job
when ‘CLARK’ then ‘办事员’
when ‘SALESMAN’ then ‘销售’
when ‘MANAGER’ then ‘经理’
when ‘ANALYST’ then ‘分析员’
ELSE ‘总裁’
end
from emp;
– decode表达式
– 想要显示全部雇员的职位,但是这些职位要求替换为中文显示
– clark:办事员 salesman:销售 manager:经理 analyst:分析员 president:总裁
select ename, decode(job, ‘CLARK’,‘办事员’, ‘SALESMAN’,‘销售’, ‘MANGER’,‘经理’, ‘ANALYST’,‘分析员’, ‘总裁’) from emp;
– 查询工资范围
select ename,sal,
case
when sal < 2000 then ‘低工资’
when sal < 5000 then ‘中工资’
else ‘高工资’
end
from emp;
7.嵌套函数
7.1嵌套函数的定义
7.2需求一
7.3需求二
7.4实例
------------------------嵌套函数-----------------------
– 想要显示距离聘用日期三个月后的下一个星期一的日期,且日期格式为:2017-01-06
select ename, hiredate,to_char(hiredate,‘YYYY-MM-DD’), to_char(next_day(add_months(hiredate,3),‘星期一’),‘YYYY-MM-DD’) from emp ;
– 显示雇员日薪并四舍五入到2位小数的结果,然后对薪资格式以’¥1,182.19’这样的例子形式进行格式化
– 想要显示距离聘用日期三个月后的下一个星期一的日期,且日期格式为:2017-01-06
select ename, hiredate,to_char(hiredate,‘YYYY-MM-DD’), to_char(next_day(add_months(hiredate,3),‘星期一’),‘YYYY-MM-DD’) from emp ;
– 显示雇员日薪并四舍五入到2位小数的结果,然后对薪资格式以’¥1,182.19’这样的例子形式进行格式化
select ename, sal, to_char(round(sal/30,2),‘L999,999.99’) from emp;