Oracle_单行函数
--dual是一张虚拟表,用于做测试
select sysdate from dual;
select 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,) from emp;
--查询员工的姓名,并显示员工姓名的后三位字母
select) from emp; |
--4.查询所有员工的姓名,将姓名中的‘A’字符替换为‘a’
select ename, replace(ename, 'A', 'a') as replace from emp; |
--5.查看字符串的长度
select; |
数值函数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) from dual;
select) from dual;
select) from dual;
select) from dual;
select) from dual; |
日期函数add_months(),next_day(),last_day() |
--7.日期函数
select sysdate from dual;
----7.1查看所有员工到今天为止入职的月份,保留到整数
select) from emp;
----7.2距离当前日期一个月后的日期
select) 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 + to_number('123') from dual;
select + '123' from dual;
select ) 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) from dual;
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; |
其他函数nvl(),nvl2() |
--3.1nvl:如果待判断的值为null,那么返回第二个参数,否则返回本身
--注意,nvl第二个参数的类型必须与第一个参数的类型一致
----查询所有员工的月薪,提成,总工资
select),) 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; |