Oracle基础知识(6)--函数

--oracle的函数
--函数可以嵌套调用
*字符函数:处理字符串
--ascii chr
select ascii('a') from dual;
select chr(97) from dual;
--lower,upper
--求A的ASCII码
select ascii(upper('a')) from dual;
--求a的ASCII码
select ascii(lower('A')) from dual;


--intcap:第一个字符大写,其他字符小写
select initcap(ename) from emp;


--ltrim,rtrim,trim
--ltrim,rtrim是字符级别的截取,在截断的时候,按照字符去匹配
select ltrim('elaleellen','el') from dual; 
select rtrim('ellenellneen','ne') from dual;
--trim的截取集是一个字符
select trim('e' from 'ellenellnee') from dual;
select trim('   ellen   ')from dual;--去掉两边的空格


--lpad,rpad:字符串
select lpad('hao',2,'ni') from dual;
select lpad('hao',5,'ni') from dual;
select lpad('hao',9,'ni') from dual;


select rpad('ni',1,'hao') from dual;
select rpad('ni',5,'hao') from dual;
select rpad('ni',8,'hao') from dual;


--其他:concat,length,substr,replace
--字符串链接,和连接运算符作用接近
select concat('Dear ',ename) from emp;
--length:查询empt表中员工姓名为5个字符的员工的信息
select * from emp where length(ename)=5;
--substr:求子串
select substr('hello world',3,5) from dual;
select substr('hello world',3) from dual;
--replace:替换
select replace('shelly','el','en') from dual;


*数字函数
--sign:求符号
select sign(-5) from dual;
--ceil:向上取整
select ceil(5.6) from dual;
--floor:向下取整
select floor(5.6) from dual;
--round:四舍五入
select round(3.5) from dual;
select round(356,-2) from dual;
--trunc:截断
select trunc(3.1415926,4) from dual;
select trunc(356,-2) from dual;


*日期函数
--sysdate systimestamp
select sysdate from dual;
select systimestamp from dual;
--add_months
select add_months(sysdate,1) from dual;
--months_between(date,date)
select months_between(sysdate,hiredate) from emp;
select months_between(sysdate,add_months(sysdate,1)) from dual;
--last_day(date)
select last_day(sysdate) from dual;
select last_day('08-2月-2018') from dual;
--next_day(date,char)
select next_day(sysdate,'星期一') from dual;
--round,trunc
select trunc(sysdate,'MONTH') from dual;
select round(sysdate,'MONTH') from dual;
select round(date'2018-01-16','MONTH') from dual;
--extract:
select extract(year from sysdate) as 年,
extract(month from sysdate) as 月,
extract(day from sysdate) as 日,
extract(hour from systimestamp) as 时,
extract(minute from systimestamp) as 分,
extract(second from systimestamp) as 秒
from dual;


*转换函数
--to_char to_date
--nvl nvl2
--问题:对emp表中员工,如果奖金为空,给200元奖金,如果奖金不为空,那么在原有奖金基础上加100
update emp01 set comm=nvl2(comm,comm+100,200);
--问题:查询emp表中所有员工的月收入
select ename,sal+nvl(comm,0) as 月收入 from emp;
select ename,coalesce(sal+comm,sal) as 月收入 from emp;
--decode
--案例:按照职位提升工资,如果是manager,工资是原来的1.5倍,如果是ANALYST,工资是原来的1.2倍
--如果是SALESMAN,工资是原来的1.1倍,否则工资是原来的1.05倍
update emp01 set sal=decode(job,'MANAGER',sal*1.5,
'ANALYST',sal*1.2,'SALESMAN',sal*1.1,sal*1.05);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值