Oracle单行函数
字符函数
接收字符输入返回字符或者数值,dual 是伪表
1. 字符串的连接可以使用 concat 可以使用“||”建议使用“||”
select concat('hello', 'world') from dual;
select 'hello'||'world' from dual;
2. 字符串的截取,使用 substr,
第一个参数是源字符串,第二个参数是开始索引,第三个参数长度,
开始的索引使用 1 和 0 效果相同
select substr('hello', 1,3) from dual;
select substr('hello', 0,3) from dual;
3.获取字符串的长度
select length('hello') from dual;
4. 字符串替换,第一个参数是源字符串,第二个参数被替换的字符串,第三个是替换字符串
select replace('hello', 'l','x') from dual;
数值函数
--四舍五入: round(v1,p1) :v1 要处理的数字;p1:要保留的小数位数
select round(199.5622) from dual;--200
select round(199.5652,2) from dual;--199.57
--截断:trunc
select trunc(199.5622) from dual;--199
select trunc(199.5652,2) from dual;--199.56
--求余:mod
select mod(199.5622,10) from dual;--9.5622
select mod(199,19) from dual;--9
日期函数
--系统时间
select sysdate from dual;--oracle服务所在机器上的时间
--查询员工入职的天数 : 现在的时间-入职时间
select empno,ename,hiredate,trunc(sysdate-hiredate) from emp;
--查询员工入职的周数
select empno,ename,hiredate,trunc((sysdate-hiredate)/7) from emp;
--获得两个时间段中的月数: MONTHS_BETWEEN()
--计算员工的入职月数
select empno,ename,hiredate,round(months_between(sysdate,hiredate)) from emp;
转换函数
to_char: 转成字符串
--数字转成字符串
select 123 as "这个是数字数字",to_char(123) as "转成字符串" from dual;
--日期转成字符串
select
sysdate,
to_char(sysdate,'yyyy') as "年份",
to_char(sysdate,'yyyy-mm-dd') as "年月日",
to_char(sysdate,'yyyy-mm-dd hh:mi:ss') as "到12时分秒",
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as "到24时分秒"
from dual;
--把字符串转成数字
select '123',to_number('123') from dual;
--把字符串转成日期
Select '2018-01-01',to_date('2018-01-01','yyyy-mm-dd') from dual;
空值处理 nvl
nvl(v1,p1)
--处理空值:nvl(v1,p1) : 当v1等于空值的时候,用p1来代替
select empno,ename,sal ,sal*12 as 年薪,comm 奖金, sal*12+nvl(comm,0) as 年收入
from emp;
nullif(p1,p2)
条件表达式
--案例:当部门编号等于10,显示java部门;当等于20的时候,显示UI部门,其他都是Python部门
--sql99 的标准
select empno,ename,deptno ,
case deptno
when 10 then 'java部门'
when 20 then 'UI部门'
else 'Python部门'
end as "部门名称"
from emp;
--oracle独有
select empno ,ename,deptno,
decode(deptno,
10,'java部门',
20,'UI部门',
'Python部门') as "部门名称"
from emp;