--1,使用单行字符型函数的实例
--1.1 查询
select empno,ename,job
from emp
where job='salesman'
--错误,无结果
--正确的
select empno as "Code",upper(ename) NAME,initcap(job) "Job"
from emp
where lower(job)='salesman'
--1.2 查询
select concat(ename,job) "Employee",substr(job,1,5) "Title",
length(ename) "Length",instr(job,'M')
from emp
where lower(job)='salesman'
--2,数字型函数
--round 四舍五入
--trunc 截取到小树点后n
--mod (m ,n ) m%n
--2.1
select round(168.333,1),trunc(168.333,1)
from dual;
--2.2
select round(168.888,0),trunc(168.888,0)
from dual;
--2.3
select round(168.888),trunc(168.888)
from dual
--2.4
select round(168.888,-1),trunc(168.888,-1)
from dual
--2.5
select mod(1900,400)
from dual
--3 日期型数据的处理
alter session set NLS_DATE_LANGUAGE='AMERICAN';
--3.1 日期型数据和一个数字相加减,救过仍为日期型
select sysdate-20
from dual
--两个日期型数据相加减,结果为数字型
select sysdate-to_date('15-JUL-02')
from dual
--或者
select sysdate-to_date('2015-6-02','yyyy-mm-dd')
from dual
--3.2查询所有推销员的工龄
select empno,ename,job,sal,(sysdate-hiredate)/365 "Years"
from emp
where job like 'SAL%'
--4 常用的日期函数:
/* 4.1
MOTHS_BETWEEN(日期1,日期2):
该函数返回月数。
*/
--4.1
select months_between('01-JUL-99','03-FEB-98')
from dual
/* 4.2
add_months(日期,n)
把n个月加到日期上
*/
select add_months(to_date('2015/10/01','yyyy/mm/dd'),8)
from dual
/* 4.3
next_day(日期,字符串):
返回下一个由字符串(星期几)指定的日期
*/
select next_day('2016/7/02','星期一')
from dual
select next_day(to_date('2016/7/19','yyyy/mm/dd'),'星期一')
from dual
/* 4.3
last_day(日期 )
返回该日期所在月的最后一天
*/
--示例<1>
select last_day('19-JULY-16')
from dual;
--示例<2>
select ename,hiredate,last_day(hiredate),next_day(hiredate,'SUNDAY'),
months_between(sysdate,hiredate) "Months",
add_months(hiredate,3) "Review"
from emp
--5, round和trunc 函数用于日期型数据
select round(to_date('28-OCT-01'),'MONTH')
from dual
--1.1 查询
select empno,ename,job
from emp
where job='salesman'
--错误,无结果
--正确的
select empno as "Code",upper(ename) NAME,initcap(job) "Job"
from emp
where lower(job)='salesman'
--1.2 查询
select concat(ename,job) "Employee",substr(job,1,5) "Title",
length(ename) "Length",instr(job,'M')
from emp
where lower(job)='salesman'
--2,数字型函数
--round 四舍五入
--trunc 截取到小树点后n
--mod (m ,n ) m%n
--2.1
select round(168.333,1),trunc(168.333,1)
from dual;
--2.2
select round(168.888,0),trunc(168.888,0)
from dual;
--2.3
select round(168.888),trunc(168.888)
from dual
--2.4
select round(168.888,-1),trunc(168.888,-1)
from dual
--2.5
select mod(1900,400)
from dual
--3 日期型数据的处理
alter session set NLS_DATE_LANGUAGE='AMERICAN';
--3.1 日期型数据和一个数字相加减,救过仍为日期型
select sysdate-20
from dual
--两个日期型数据相加减,结果为数字型
select sysdate-to_date('15-JUL-02')
from dual
--或者
select sysdate-to_date('2015-6-02','yyyy-mm-dd')
from dual
--3.2查询所有推销员的工龄
select empno,ename,job,sal,(sysdate-hiredate)/365 "Years"
from emp
where job like 'SAL%'
--4 常用的日期函数:
/* 4.1
MOTHS_BETWEEN(日期1,日期2):
该函数返回月数。
*/
--4.1
select months_between('01-JUL-99','03-FEB-98')
from dual
/* 4.2
add_months(日期,n)
把n个月加到日期上
*/
select add_months(to_date('2015/10/01','yyyy/mm/dd'),8)
from dual
/* 4.3
next_day(日期,字符串):
返回下一个由字符串(星期几)指定的日期
*/
select next_day('2016/7/02','星期一')
from dual
select next_day(to_date('2016/7/19','yyyy/mm/dd'),'星期一')
from dual
/* 4.3
last_day(日期 )
返回该日期所在月的最后一天
*/
--示例<1>
select last_day('19-JULY-16')
from dual;
--示例<2>
select ename,hiredate,last_day(hiredate),next_day(hiredate,'SUNDAY'),
months_between(sysdate,hiredate) "Months",
add_months(hiredate,3) "Review"
from emp
--5, round和trunc 函数用于日期型数据
select round(to_date('28-OCT-01'),'MONTH')
from dual