数据库开发基础-Oracle-SQL基础-003

上节内容【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;



--

猜你喜欢

转载自blog.csdn.net/coder_boy_/article/details/80531945