字符函数
lower 全部小写
查询emp员工姓名,以小写显示
select lower(ename) from emp;
upper 全部大写
select upper(ename) from emp;
initcap 首字母大写
查询emp员工姓名,首字母大写
select initcap(ename) from emp;
substr 字符串截取
substr(ename,1,3)
查询名字的前三个字母
select substr(ename,1,3) from emp;
length 字符长度
查询名字长度是5的员工
select ename from emp where length(ename)=5
Oracle 链接符 ||
首字母小写 后面的大写
select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp;
使用查询输出SCOTT的工作是ANALYST
select ‘SCOTT的工作是’||job from emp where ename=‘SCOTT’;
instr 字符位置
查询HELLOWORLD中W的位置
select instr(‘HELLOWORLD’,‘W’) from dual;
查询名字中包含A的员工信息
select ename from emp where ename like’%A%’;
select ename from emp where instr(ename,‘A’)>0
trim 删除字符两边空格
删除Hello中的H
select trim('H’from ‘Hello’) from dual;
replace 替换
repalce(str,el,e2)
把姓名中的A替换成a
select replace(ename,‘A’,‘a’) from emp;
select ename,replace(ename,‘A’,‘a’) from emp;
数学函数
round 四舍五入
格式:round(m,n)
ROUND函数四舍五入列、表达式或者n位小数的值。如果第二个参数是0或者缺少,值被四舍五入为整数。如果第二个参数是2,值被四舍五入为两位小数。如果第二个参数是–2,值被四舍五入到小数点左边两位。
ROUND函数可以被用于日期函数。
select round(45.656,2) from dual; 45.66
计算日薪 每个月30天,保留两位
select round(sal/30,2) from emp;
trunc 截断
格式:trunc(m,n)
TRUNC函数截断列、表达式或者n位小数值。
TRUNC函数对参数起的作用类似于ROUND函数。如果第二个参数是0或者缺少,值被截断为整数。如果第二个参数是2,值被截断为两位小数。如果第二个参数是–2,值被截断到小数点左边两位。
trunc(45.9)=45
select trunc(45.9) from dual;
select trunc(45.932,-2) from dual;
MOD
格式:mod(m,n)
MOD函数找出值m除以值n的余数。
注:MOD函数经常用于确定一个值是奇数还是偶数。
mod(10,3)=1
select mod(10,3) from dual;
45 奇数
mod(45,2)=1
select mod(45,2) from dual;
floor 向下取整
floor(9.9)=9
select floor(9.9) from dual;
ceil 向上取整
ceil(9.9)=10
ceil(9.1)=10
select ceil(9.0) from dual;=9
select ceil(9.1) from dual;=10
abs 绝对值
abs(-1)=1
select abs(-1) from dual;
power(m,n) M的N次幂
select power(3,2) from dual;=9
系统时间
sysdate
select sysdate from dual;
months_between 两个时间之间的月数
select months_between(sysdate,‘1-9月-2015’) from dual;
add_months 给指定时间添加月数
给2015-9-1加2个月
select add_months(‘1-9月-2015’,6) from dual;
next_day() 查询指定时间下一个星期几的日期
select sysdate, next_day(sysdate,‘星期五’) from dual;
last_day() 指定时间的最后一天
select last_day(‘1-2月-2016’) from dual;
round
select round(sysdate) from dual; 2016-9-18
select round(to_date(‘2-5月-2016’),‘year’) from dual; 2016-1-1
trunc
select trunc(sysdate) from dual;
select sysdate, trunc(sysdate,‘year’) from dual;
select sysdate, trunc(sysdate,‘month’) from dual;
select sysdate, trunc(sysdate,‘day’) from dual;
select trunc(to_date(‘2016-7-4’,‘yyyy-mm-dd’),‘year’) from dual;
入职天数
Select ename,hiredate,round(months_between(sysdate,hiredate)*30) from emp;
查询入职时间2016-9-18
select to_char(hiredate,‘yyyy-MM-dd’) from emp;
select to_char(1210.73,‘9999.9’) from dual;
select to_char(1210.73,’$9,999.00’) from dual;
select to_date(‘20070701’,‘yyyy-mm-dd’) from dual;
to_number 2016918
select to_number(‘2016918’) from dual;