首页 > 代码库 > oracle强化练习之单行函数

oracle强化练习之单行函数

1.      显示dname和loc中间用-分隔

Select dname ||’-‘|| loc From dept;

2.      将部门名称左填充为10位

Select lpad( dname,10) From dept;

3.      将员工名字的‘S’,替换为‘s’

Select replace(ename,’S’,’s’) From emp;

4.      求员工名字的前三位

Select  substr(ename,1,3) From emp;

5.      查找员工名字中‘S’第一次出现的位置

Select instr(ename,’S’,1,1) From emp;

6.      查找员工名字中第二次出现‘T’的位置

Select instr(ename,’T’,1,2) From emp;

7.      查找员工名字的长度

Select length(ename) From emp;

8.      显示一年前的今天日期和一年以后今天的日期

Select add_months(sysdate,-12),add_months(sysdate,12) from emp;

9.      显示本月第三天的日期

Select sysdate-(to_char(sysdate,’dd’))+3 From dual;

10.   显示今天到‘2012-12-12‘相隔的月数

Select months_between(sysdate,’12-12月-2012’) from dual;

11.   显示员工工资的货币表示形式,比如RMB5,000

Select to_char(sal,’$9,999’) From emp;

12.   显示1949年10月1日的字符串格式,最后显示结果为1949年10月1日

Select to_char(to_date(‘1949-10-1‘,‘yyyy-mm-dd‘),‘fmyyyy"年"MM"月"DD"日"‘) from dual;

1949年10月1日

13.   按照如下要求显示数据:

sal=800  显示低工资  
     sal=3000  正常工资
     sal=5000  高工资

select sal,decode(sal,800,‘低工资‘,3000,‘正常工资‘,5000,‘高工资‘) from emp;

14.   显示以下字段及字符串的连接:"The job id for ",姓名(大写)," is " ,工作(小写)  如:The job id for ALLEN is salesman

Select ‘The job id for‘||ename||‘ is ‘||job from emp;

15.   显示出姓名中最后一个字母为"N"的员工姓名 (使用substr或者instr)

Select ename From emp where substr(ename,-1)=’N’;

16.   查询参加工作时间在每月15日之后的员工姓名,参加工作时间

Select ename,hiredate From emp whereto_char(hiredate,’DD’)>15;

17.   用"*"的个数表示员工的工资中包含多少"千",如3500,显示‘***‘,5600,显示‘*****‘

Select ename,sal,lpad(‘*’,sal/1000,’*’) From emp;

18. 显示员工名,参加工作时间,参加工作6个月后的第一个周一

Select ename,hiredate,next_day(add_months(hiredate,6),2) From emp;

19. 显示员工姓名,月薪,年薪(13个月的月薪+10000元奖金+comm)要求别名为annual_salary,要求所有人的年薪都显示出来

Select ename,sal,(sal*13+10000+nvl(comm,0)) “annual_salary”Fromemp;

oracle强化练习之单行函数