--1. 找出各月倒数第3天受雇的所有员工
select *
from emp
where to_char(hiredate,'dd')=to_char(last_day(hiredate),'dd')-2;
--2. 找出早于12年前受雇的员工
select ename
from emp
where months_between(sysdate,hiredate)>12*12;
--3. 以首字母大写的方式显示所有员工的姓名
select initcap(ename)
from emp;
--4. 显示正好为5个字符的员工姓名
select ename
from emp
where length(ename)=5;
--5. 显示不带有”R”的员工姓名
select ename
from emp
where ename not like '%R%';
--6. 显示所有员工姓名的前三个字符
select substr(ename,1,3)
from emp;
--7. 显示所有员工的姓名,加入公司的年份和月份,按受雇日期所在的月排序,若月份相同,则将最早年份排在最前面
select ename,to_char(hiredate,'yyyy')||'年' "年",to_char(hiredate,'mm') ||'月' "月"
from emp
order by to_number(to_char(hiredate,'mm')),to_number(to_char (hiredate,'yyyy'));
--8. 显示一个月为30天的情况所员工的日薪金,忽略余数
select ename "姓名",round((sal+nvl(comm,0))/30,0) "日薪"
from emp;
--9. 找出在(任何年份)2月受聘的所有员工
select ename ,hiredate
from emp
where to_char(hiredate,'mm')=2;
--10. 对每个员工,显示其加入公司的天数
select ename, round(months_between(sysdate,hiredate),0)*30
from emp;
--11. 以年月日方式显示所有员工的服务年限
select ename, (trunc((months_between(sysdate,hiredate)*30)/(30*12),0)) "年",
trunc(mod(months_between(sysdate,hiredate)*30,360)/30,0) "月",
trunc(mod((months_between(sysdate,hiredate))*30,30),0) "日"
from emp;
Oracle的emp表的基本函数学习
最新推荐文章于 2021-11-24 11:23:52 发布