oracle详细笔记---单行函数

**

oracle详细笔记

--                                一:简单查询
--1.选择在部门 30 中员工的所有信息
select * from emp e where e.deptno = '30';

--2.列出职位为( MANAGER)的员工的编号,姓名
select e.empno,e.ename from emp e where e.job = 'MANAGER';

--3.找出奖金高于工资的员工
select * from emp e where e.comm > e.sal;

--4.找出每个员工奖金和工资的总和
select e.ename,(e.comm+e.sal)total from emp e;

--5.找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)
SELECT *
  FROM EMP a
 where (a.deptno = '10' and a.job = 'MANAGER')
    or (a.deptno = '20' and a.job = 'MANAGER');

--6.找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工:(in函数)
select *
  from emp e
 where e.deptno = '10'
   and e.job not in ('MANAGER', 'MANAGER')
   and e.sal >= 2000;

--7.找出有奖金的员工的不同工作
select distinct e.job, e.ename, e.sal, e.comm
  from emp e
 where e.comm is not null
   and e.comm > 0;

 --8.找出没有奖金或者奖金低于 500 的员工
 select * from emp e where e.comm is null or e.comm < 500  ;

 --9.显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
 select e.ename,e.hiredate from emp e order by e.hiredate asc

 -- --------------------------  二:单行函数 --------------------- ----- 

 --1.Upper:转换为大写
 select Upper('abcd') from dual;
 select * from emp e where e.ename = upper('smith');

 --2:Lower:转换为小写
 select lower('ASAD') from dual;

--3:Initcap:返回字符串并将字符串的第一个字母变为大写;
select initcap(e.ename) from emp e;
select initcap('smith') from dual;

--4.Concat:拼接
select concat('123','abc') from dual;

select '111' || '222' from dual;

--5.Substr:字符串截取:截取右边内容,包括左边

SELECT SUBSTR('abcdef',LENGTH('abcdef')-2) FROM dual

SELECT substr('abcdef',-4,3) FROM dual;--从右边算起截取:cde

--6.length
SELECT e.ename,Length(e.ename) FROM emp e;

--7.Replace
SELECT replace(e.ename,'A','爱') FROM emp e ;

--8.instr:在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。(下表从1开始算起)
SELECT INSTR('Hello World','rl') FROM dual;

--9.Lpad :左侧开始填充

SELECT lpad('Hello',10,'@') FROM dual;

--10.Rpad

SELECT rpad('Hello',10,'*') FROM dual;

--11.Trim :过滤首位空格

SELECT trim('  Hello Word   ') FROM dual;

---数值函数

--1.Round,第二个参数保留的小数位数
SELECT round(412,-1) FROM dual;
select round(412.236,2) from dual;

--2.Trunc:TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
--注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,
--比如参数为1即取整到十分位,如果是-1,则是取整到十位
--TRUNC(89.985,2)=89.98

--TRUNC(89.985)=89

--TRUNC(89.985,-1)=80
select trunc(412.13,-2) from dual;

---日期函数

--1.Months_between()
select months_between(sysdate,e.hiredate) from emp e ;

--2.Add_months():增加月
select add_months(sysdate,2) from dual;

--NEXT_DAY(date,char) date参数为日期型, char:为1~7或Monday/Mon~Sunday/ 
--指定时间的下一个星期几(由char指定)所在的日期, 
--char也可用1~7替代,1表示星期日,2代表星期一。。。。 还可以是星期一、星期二。。。星期日 
select next_day(sysdate,2) from dual;  

--3.Last_day:LAST_DAY函数返回指定日期对应月份的最后一天。
select last_day(sysdate) from dual; 

你可能感兴趣的:(数据库)