Oracle的emp表的基本函数学习

--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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值