oracle数据库练习题(函数)附 答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用oracle函数完成查询
1 以首字母大写的方式显示所有员工的姓名
select initcap(ename) from emp;
2 将员工的职位用小写显示
select lower(job) from emp;
3 将员工的名字分别用大写和小写显示
select upper(ename),lower(ename) from emp;
4 将员工名字,首字母小写,其他字母大写的方式显示
select concat(lower(substr(ename,1,1)),upper(substr(ename,2,length(ename)-1))) from emp;
5 显示员工姓名为5个字符的员工
select ename from emp where length(ename)=5;
6 显示所有员工姓名的前三个字符
select substr(ename,1,3) from emp;
7 显示所有员工姓名的后三个字符
select substr(ename,-3,3) from emp;
8 以字符长度为10的方式显示员工职位,多余的位数在右边以*来填充
select rpad(job,10,'*') from emp;
9 找出字符串"oracle training"中第二个ra出现的位置
select instr('oracle training','ra',1,2) from dual;
10 去除字符串‘ aadde gf ’两边的空格
select trim(' ' from ' aadde gf ') from dual;
11 以指定格式显示员工的工资(格式:SMITH 的工资是 800)
select concat(concat(ename,' 的工资是 '),sal) from emp;
12 显示所有员工的姓名,用a替换所有"A"
select replace(ename,'a','A') from emp;
13 显示员工姓名中包含‘H’的员工
select ename from emp where instr(ename,'H')<>0;
14 显示员工姓名中第二个字符是‘L’的员工
select ename from emp where instr(ename,'L')=2;
15 显示员工姓名中最后一个字符是‘T’的员工
select ename from emp where instr(ename,'T',length(ename))<>0;
或
select ename from emp where substr(ename,-1)='T';
16 查询一个月前入职的员工
select ename from emp where add_months(hiredate,1)>=sysdate;
17 显示在一个月为30天的情况所有员工的日薪,忽略余数
select trunc(sal/30), ename from emp;
or
select floor(sal/30), ename from emp;
18 显示员工在此公司工作了几个月(要求结果是整数)
select floor(months_between(sysdate,hiredate)) from emp;
19 显示所有12月份入职的员工
select ename,hiredate from emp where to_char(hiredate,'mm')=12;
20 显示员工的年薪(12个月的工资+补贴)
select (sal+nvl(comm,0))*12 from emp;
21 显示所有员工的姓名、加入公司的年份和月份,并且按照年份排序
select ename,to_char(hiredate,'yy'),to_char(hiredate,'mm') from emp order by 2,3;
22 显示每月倒数第3天入职的所有员工
select hiredate,ename from emp where last_day(hiredate)-2=hiredate
23 显示入职满10年的员工的姓名和受雇日期。
select ename, hiredate from emp where sysdate>=add_months(hiredate,12*10);