------------单行函数
--单行函数:处理的是一条数据,结果也是一条
-- 字符函数
selectupper('abc')from dual;
selectlower('ABC')from dual;
selectlower(ename)from emp;
--字符串的截取 :substr(v1,p1,p2) ,v1:处理的字符串,p1从哪里开始截取,0和1都是从第一个开始截取 ;p2 :截取几个字符串
selectsubstr('hello',0,2)from dual;-- he
selectsubstr('hello',1,2)from dual;-- he
selectsubstr('hello',2,2)from dual;--el
--替换字符串
--replace(v1,p1,p2) :v1要处理的字符串,p1:要替换的字符串,p2:替换后的字符串
selectreplace('hello','l','x')from dual;
-------------------------------------
--=============数字函数
-- 四舍五入 : round(v1,p1) p1:保留几位小数后数字
selectround(59.661)from dual;--60
selectround(59.661,1)from dual;--59.7
--截断:trunc
selecttrunc(59.661)from dual;--59
selecttrunc(59.661,1)from dual;--59.6
--============================日期函数
--当前时间
selectsysdatefrom dual;
--范例:查询雇员的进入公司的周数。
select ename,hiredate,round((sysdate-hiredate)/7,2)from emp;
--获得两个时间段中的月数: MONTHS_BETWEEN()
select ename,hiredate, months_between(sysdate,hiredate)from emp;
--------==========================转换函数
-- to_char
select123as "aaaaaaaaaaaaaaaaaaaa" ,to_char(123)from dual;
--to_number
select'123',to_number('123')from dual;
-- to_date
select'2018-07-06',to_date('2018-07-0618:20:30','yyyy-mm-dd hh24:mi:ss')from dual;
--=========================通用函数
--nvl 空值的判断
--=========================什么是条件表达式?
/*
if(){
}
else if(){
}
else{
}
*/
/*
decode(v1,p1,p2,p3,p4.....pn)
当v1等于p1的时候,显示p2
当v1等于p3的时候,显示p4
。。。。。
pn 类似 else
*/
-- 查询员工表的数据:当部门编号等于10输出“java部门”,当等于20 显示“php部门”,其他就是“总裁办公室”
select empno,ename, deptno,
decode(deptno,10,'java部门',20,'php部门','总裁办公室')
as部门
from emp;
--可以使用case when来替代上述的
/*
case v1
when p1 then p2
when p2 then p3
else
pn
end
*/
select empno,ename, deptno,
case deptno
when10then'java部门'
when20then'php部门'
else'总裁办公室'
end
as部门
from emp;