Oracle_单行函数

Oracle_单行函数

--dual是一张虚拟表,用于做测试
select sysdate from dual;
select 1 + 1 from dual;  
字符函数initcap(),lower(),upper(),substr(),replace(),length()
--1.字符函数
----首字母大写,全部小写,全部大写
select initcap('hello world'),lower('LIASDFALASDLF ASLKDF'), upper('sdfafa dsf') from dual;  
--2.查询所有员工的姓名,分别以首字母大写,其余字母小写的形式显示;
select ename, initcap(ename), lower(ename) from emp;  
--3.字符串的截取
--substr():第一个参数表示被截取的字符串,第二个参数表示起始位置,第三个参数表示截取的长度
-----------第一个参数表示被截取的字符串
-----------第二个参数表示截取的开始位置
-----------第三个参数可以省略,表示一直截取到末尾
--查询员工的姓名,并显示员工姓名的前三位字母
select ename, substr(ename, 0, 3) from emp;
--查询员工的姓名,并显示员工姓名的后三位字母
select ename, substr(ename, -3) from emp;  
--4.查询所有员工的姓名,将姓名中的‘A’字符替换为‘a’
select ename, replace(ename, 'A', 'a') as replace from emp;  
--5.查看字符串的长度
select ename from emp where length(ename)=6;  
数值函数ceil(),floor(),round(),trunc()
--6.数值函数  ceil()  floor()  round()  trunc()  
select ceil(12.00001) from dual;
 
select floor(12.99999) from dual;
select round(12.43) from dual;
select trunc(12.88) from dual;
 
 
select round(88.44, 1) from dual;
select round(88.45, 1) from dual;
 
select round(44.45, -1) from dual;
select round(45.45, -1) from dual;
select round(155.45, -2) from dual;  
日期函数add_months(),next_day(),last_day()
--7.日期函数
select sysdate from dual;
----7.1查看所有员工到今天为止入职的月份,保留到整数
select hiredate, round(months_between(sysdate, hiredate), 0) from emp;
 
----7.2距离当前日期一个月后的日期
select sysdate, add_months(sysdate, 1) from dual;
 
----7.3得到距离下一个指定星期最近的日期
select sysdate, next_day(sysdate, '星期六') from dual;
 
----7.4last_day:表示当前月份的最后一天是记号
select sysdate, last_day(sysdate) from dual;  
 
 
 
转换函数to_number(),to_date(),to_char()
select 1 + to_number('123') from dual;
select 1 + '123' from dual;
select 1 + to_char(123) from dual;  
--1.to_date将字符串转化为日期类型
select * from emp where hiredate = '17-12月-80';
select * from emp where hiredate = to_date('1980-12-17','yyyy-MM-dd');
select to_date('1840-1-1 18:00:00','yyyy-mm-dd hh24:mi:ss') from dual;  
--2.to_char将日期转化为字符串
select 123,to_char(123) from dual;
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;  

select ename,to_char(hiredate,'yyyy')year from emp;  
其他函数nvl(),nvl2()
--3.1nvl:如果待判断的值为null,那么返回第二个参数,否则返回本身
--注意,nvl第二个参数的类型必须与第一个参数的类型一致
----查询所有员工的月薪,提成,总工资
select sal,nvl(comm,0),sal+nvl(comm,0) from emp;  
--3.2nvl2(expr1,expr2,expr3)
--表达式1为空的时候,返回表达式3,否则返回表达式2
select sal,comm,nvl2(comm,sal+comm,sal) total from emp;  
decode:多重判断  
--查看所有的职位信息
select distinct job from emp;
select distinct job,decode(job,'CLERK','职员','SALESMAN','销售','PRESIDENT','董事长','MANAGER','经理','ANALYST','分析师')job_zh 
from emp;  
 
 
 
原文地址:https://www.cnblogs.com/haozhengfei/p/6538389.html