上节内容【002】练习:
--1.查询emp表中数据,列出一列,内容为名字与职位
-- 显示格式:ename:job
select ename||':'||job from emp;
--2.查看每个员工职位的字符个数
select ename,length(job) from emp;
--3.将所有员工的名字以小写形式,与首字母大写形式
--- 查询出来,第一列为小写形式,第二列为首字母大写
select ename,lower(ename),initcap(ename) from emp
--4.将字符串"aaaaaabaaaaa"中左右两边的a去除
---去除左边的a
select trim( 'a' from 'aaaaaabaaaaa') from dual;
select ltrim('aaaaaabaaaaa','a') from dual;
--5.显示每个员工的名字,要求显示10位,第一列左对齐效果,
---第二列 右对齐效果
select ename,rpad(ename,10,' ') from emp;
select ename,lpad(ename,10,' ') from emp;
--6.截取字符串“DOCTOR WHO”中的“WHO”
select substr('DOCTOR WHO',8,3) from dual;
select substr('DOCTOR WHO',-3,3) from dual;
--7.查看“DOCTOR WHO”中“WHO”的位置
select instr('DOCTOR WHO','WHO') from dual;
select instr('DOCTOR WHO','WHO',1,1) from dual;
--8.分别查看55.789四舍五入保留小数点后2位,整数位,十位后的
---数字,显示成三列
select round(55.789,2),round(55.678),round(55.678,-1) from dual;
--9.分别查看55.789截取后保留小数点后2位,整数位,十位后的
---数字,显示成三列
select trunc(55.789,2),trunc(55.789),trunc(55.789,-1) from dual;
--10.查看每名员工工资百位以下的数字?
select ename,sal,mod(sal,100) from emp;
--11.查看每名员工从入职到今天一共多少天,若有小数则向上取整。
select ename,hiredate,ceil(sysdate-hiredate) from emp;
--12.查看从2008-08-08号到今天为止一共经历了多少天?
select sysdate-to_date('2008-08-08','YYYY-MM-DD') from dual;
--13.将每名员工入职时间以 例如:
----1981年12月3日的形式显示
select ename,to_char(hiredate,'YYYY"年"MM"月"DD"日"') from emp;
--14.查看每个员工入职所在月的月底是哪一天?
select ename,last_day(hiredate) from emp;
--15.查看每名员工转正日期(入职3个月)
select ename,hiredate,add_months(hiredate,3) from emp;
--16.查看每名员工入职至今共多少个月?
select ename,months_between(sysdate,hiredate) from emp;
--17.查看从明天开始一周内的周日是哪一天?
select next_day(sysdate,1) from dual;
--18.查看82年以后入职的员工的入职日期,82年以前的
---按照1982年01月01号显示,格式都是DD-MON-RR(默认)
select ename,
hiredate,
greatest(hiredate, to_date('1982-01-01', 'YYYY-MM-DD'))
from emp;
/*select ename,
hiredate,
least(hiredate, to_date('1982-01-01', 'YYYY-MM-DD'))
from emp*/
--19.查看每名员工的入职年份?
select to_char(hiredate,'YYYY') from emp;
select ename, hiredate, extract(year from hiredate) from emp;--时间截取
--20.显示每个员工的总收入(工资加奖金),奖金为null的只看工资
select ename,sal,comm,sal+nvl(comm,0) from emp;
--21.使用nvl2实现第20题的需求【nvl2是Oracle特有】
select ename,sal,comm,nvl2(comm,sal+comm,sal) from emp;
--