Oracle内置函数

日期函数

ADD_MONTHS
MONTHS_BETWEEN
LAST_DAY
ROUND
NEXT_DAY
TRUNC
EXTRACT

字符串函数

字符串函数
Initcap(char)
Lower(char)
Upper(char)
Ltrim(char,set)
Rteim(char,set)
Translate(char,from,to)
Replace(char,searchstring,[repstring])
Instr(shar,m,n)
Concat(expr1,expr2)

数字函数

Abs(n)
Ceil(n)
Cos(n)
Cosh(n)
Floor(n)
Power(m,n)
Mod(m,n)
Round(m,n)
Trunc(m,n)
Sprt(n)
Sign(n)

转换函数

常用的转换函数有:
TO_CHAR
TO_DATE
TO_NUMBER
以下是几个用来转换空值的函数:
NVL
NVL2
NULLIF

其它函数

以下是一些其它的字符函数:
CHR和ASCII
LPAD和RPAD
TRIM
LENGTH
DECOD

--1、查询emp表中的所有信息
select * from emp

--2、显示emp表的雇员名称和工资。
select ename,sal from emp;

--3、查询emp表中部门编号为20的并且sal(工资)大于3000的所有员工信息
select * from emp where deptno=20 and sal>3000;

--4、查询emp表中部门编号为20的或者sal(工资)大于3000的所有员工信息
select * from emp where deptno=20 or sal>3000;

--5、使用between and 查询工资在20004000之间的员工(用and 重新实现)
select * from emp where sal between 2000 and 4000

--6、使用in 查询 部门编号1020的所有员工
select * from emp where deptno in(10,20)

--7、使用like查询所有名字中包括W的员工信息
select * from emp where ename like '%w%' 

--8、使用like查询所有员工名字中第二子字母为W的员工信息
select * from emp where ename like '_w%' 

--9、查询所有员工信息并按照部门编号和工资进行排序
select * from emp order by deptno,sal;

--10、显示雇员工资上浮20%的结果。
select ename,sal*1.2 from emp;

--11、显示EMP表的雇员名称以及工资和津贴的和。
select ename ,sal+nvl(comm,0) from emp;

--12、在查询中使用列别名。特殊的别名如别名中有空格
select ename 姓名 from emp

--13、显示DEPT表的内容,使用别名将表头转换成中文显示。
select deptno 编号,dname 名称,loc 地址 from dept;

--14、显示DEPT表的内容,按以下的形式:部门 ACCOUNTING所在的城市为NEW YORK     
select dname || '所在城市'||loc from dept  

--15、使用DISTINCT消除重复行显示。显示emp表中的的职位
select distinct job from emp;

--16、查询雇员姓名和工资,并按工资从小到大排序。
select ename,sal from emp order by sal desc;

--17、查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。
select ename,hiredate from emp order by hiredate desc;

--18、查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。
select * from emp order by deptno asc,hiredate asc;

--19、按工资和工作月份的乘积排序。
select sal*extract(month from(hiredate)) 结果 from emp order by 结果;

--20、显示职务为“SALESMAN”的雇员的姓名、职务和工资。
select ename,job,sal from emp where job='SALESMAN';

--21、显示工资大于等于3000的雇员姓名、职务和工资。
select ename,job,sal from emp where sal>=3000;

--22、显示1982年以后雇佣的雇员姓名和雇佣时间。
select ename 姓名,(SYSDATE-hiredate)/365 雇佣时间 from emp where extract(year from hiredate)>1982;

--23、显示部门编号为10的雇员姓名和雇佣时间
select ename,hiredate from emp where deptno =10;

--24、显示工资在1000~2000之间(不包括10002000)的雇员信息。
select * from emp where sal>1000 and sal<2000;

--25、显示部门10中工资大于1500的雇员。
select * from emp where deptno=10 and sal>1500;

--26、显示职务为CLERKMANAGER的雇员信息。
select * from emp where job='CLERK' or job='MANAGER';

--27、显示部门10以外的其他部门的雇员。
select * from emp where deptno !=10;

--28、显示部门10和部门20中工资小于1500的雇员。
select * from emp where sal<1500 and deptno in(10,20);

--29、显示经理编号没有填写的雇员。
select * from emp where mgr is null;

--30、如果不知道表的字段内容是大写还是小写,可以转换后比较。
select upper(ename) from emp;
select lower(ename)from emp;

--31、显示名称以“W”开头的雇员,并将名称转换成以大写开头。
select initcap(ename) from emp where ename like 'W%';

--32、显示雇员名称中包含“S”的雇员名称及名称长度。
select ename ,length(ename) from emp where ename like '%S%';

--33、显示部门表中部门和所在城市列表,中间以下划线“”连接,城市名转换成以大写字母开头。
select dname || '_' || initcap(loc) from dept;

--34、返回系统的当前日期
select to_char(sysdate,'YYYY-MM-DD') from dual;

--35、返回20032月的最后一天。
select last_day(to_date(200302,'YYYYMM')) from dual;
select last_day(to_date('2003-02','yyyy-mm')) from dual;

--36、假定当前的系统日期是200326日,求再过1000天的日期。
select to_date(20030206,'YYYYMMDD')+1000 from dual;
select to_date('2003-02-06','YYYY-MM-DD')+1000 from dual;

--37、假定当前的系统日期是200326日,显示部门10雇员的雇佣天数。
select to_date(20030206,'YYYYMMDD')-hiredate from emp where deptno=10;

--38、显示雇员名称和雇佣的星期数
select ename,floor((sysdate - hiredate)/7) from emp;

--39、显示从本年1月1日开始到现在经过的天数(当前时间取SYSDATE的值)。
select sysdate - to_date(concat(extract(year from (sysdate)),'0101'),'YYYYMMDD') from dual;

--40、将日期显示转换成中文的年月日。
select to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual;

--41、将雇佣日期转换成字符串并按新格式显示。(17 121980)
select to_char(hiredate,'DD MM YYYY') from emp;

--42、使用nvl函数转换空值。(如果是数值转换成0 字符转换为 空)
select nvl(comm,0) from emp;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值