字符函数:
Upper:小写转大写
SELECT Upper ('abcde') FROM dual ;
Lower:大写转小写
SELECT lower('ABCDE') FROM dual ;
Concat :拼接
Select concat('a','b') from dual;
Select 'a'|| 'b' from dual;
substr
Select substr('abcde',length('abcde')-2) from dual;
Select substr('abcde',-3,3) from dual; 从倒数第三为截取三位
Replace :替代
Select replace(ename,‘a’,‘A’) from emp;
Instr :返回字符串中存在某字符串的位置
Select instr('Hello World','or') from dual; 8 indexof
Trim :过滤首尾空格 trim() Mr Smith
trim(' Mr Smith ')
数值函数
Round
select round(412,-2) from dual; 整数部分的倒数第二位为进位位
select round(412.313,2) from dual;四舍五入保留两位小数
Mod
Trunc
select trunc(412.13,-2) from dual;
日期函数 (注:sysDate为日期类型)
Months_between()
select add_months(sysDate,1) from dual;
Next_day() :返回该日期的下一个星期一的日期
select next_day(sysDate,'星期一') from dual;
Last_day ():返回该日期月份的最后一天的日期
select last_day(sysDate) from dual;
计算两个日期相差的天数
select to_date(maturity_date,'yyyyMMdd')-to_date(remit_date,'yyyyMMdd')from draft_info
转换函数
To_char() (注:sysDate为日期类型)
select to_char(sysDate,'yyyyMMddhhmiss') from dual;
select to_char(sysDate,'yyyy') from dual;
select to_char(sysDate,'fmyyyy-mm-dd') from dual; 返回样式:2012-9-9
select to_char(sysDate,'yyyy-mm-dd') from dual; 返回样式:2012-09-09
select to_char(sal,'L999,999,999') from emp;
select to_char(sysDate,'D') from dual;//返回数子星期
select to_char(sysDate,'DY') from dual;//返回字符串星期
To_number() :字符 类型转换为数据类型
select to_number('13')+to_number('14') from dual;
To_date() :字符串类型转换为日期类型
Select to_date(‘20090210’,‘yyyyMMdd’) from dual;
通用函数
NVL()函数
select nvl(comm,0) from emp;
NULLIF()函数
如果表达式exp1与exp2的值相等则返回null,否则返回exp1的值
NVL2()函数
select empno, ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;
COALESCE()函数
依次考察各参数表达式,遇到非null值即停止并返回该值。
select empno, ename, sal, comm, coalesce(sal+comm, sal, 0)总收入 from emp;
CASE表达式
select empno, ename, sal,
case deptno
when 10 then '财务部'
when 20 then '研发部'
when 30 then '销售部'
else '未知部门'
end 部门
from emp;
DECODE()函数
和case表达式类似,decode()函数也用于实现多路分支结构
select empno, ename, sal,
decode(deptno, 10, '财务部', 20, '研发部', 30, '销售部', '未知部门') 部门 from emp;
分组函数
count、avg、min、max、sum
如果数据库表中没有记录,count(*)返回的不是null,而是0
可使用NVL()函数强制分组函数处理空值
select avg(nvl(comm, 0)) from emp;
select deptno, job, avg(sal)
from emp where hiredate >= to_date('1981-05-01','yyyy-mm-dd')
group by deptno,job
having avg(sal) > 1200
order by deptno,job;
Upper:小写转大写
SELECT Upper ('abcde') FROM dual ;
Lower:大写转小写
SELECT lower('ABCDE') FROM dual ;
Concat :拼接
Select concat('a','b') from dual;
Select 'a'|| 'b' from dual;
substr
Select substr('abcde',length('abcde')-2) from dual;
Select substr('abcde',-3,3) from dual; 从倒数第三为截取三位
Replace :替代
Select replace(ename,‘a’,‘A’) from emp;
Instr :返回字符串中存在某字符串的位置
Select instr('Hello World','or') from dual; 8 indexof
Trim :过滤首尾空格 trim() Mr Smith
trim(' Mr Smith ')
数值函数
Round
select round(412,-2) from dual; 整数部分的倒数第二位为进位位
select round(412.313,2) from dual;四舍五入保留两位小数
Mod
Trunc
select trunc(412.13,-2) from dual;
日期函数 (注:sysDate为日期类型)
Months_between()
select months_between(maxDate,minDate) from emp;
Add_months()select add_months(sysDate,1) from dual;
Next_day() :返回该日期的下一个星期一的日期
select next_day(sysDate,'星期一') from dual;
Last_day ():返回该日期月份的最后一天的日期
select last_day(sysDate) from dual;
计算两个日期相差的天数
select to_date(maturity_date,'yyyyMMdd')-to_date(remit_date,'yyyyMMdd')from draft_info
转换函数
To_char() (注:sysDate为日期类型)
select to_char(sysDate,'yyyyMMddhhmiss') from dual;
select to_char(sysDate,'yyyy') from dual;
select to_char(sysDate,'fmyyyy-mm-dd') from dual; 返回样式:2012-9-9
select to_char(sysDate,'yyyy-mm-dd') from dual; 返回样式:2012-09-09
select to_char(sal,'L999,999,999') from emp;
select to_char(sysDate,'D') from dual;//返回数子星期
select to_char(sysDate,'DY') from dual;//返回字符串星期
To_number() :字符 类型转换为数据类型
select to_number('13')+to_number('14') from dual;
To_date() :字符串类型转换为日期类型
Select to_date(‘20090210’,‘yyyyMMdd’) from dual;
通用函数
NVL()函数
select nvl(comm,0) from emp;
NULLIF()函数
如果表达式exp1与exp2的值相等则返回null,否则返回exp1的值
NVL2()函数
select empno, ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;
COALESCE()函数
依次考察各参数表达式,遇到非null值即停止并返回该值。
select empno, ename, sal, comm, coalesce(sal+comm, sal, 0)总收入 from emp;
CASE表达式
select empno, ename, sal,
case deptno
when 10 then '财务部'
when 20 then '研发部'
when 30 then '销售部'
else '未知部门'
end 部门
from emp;
DECODE()函数
和case表达式类似,decode()函数也用于实现多路分支结构
select empno, ename, sal,
decode(deptno, 10, '财务部', 20, '研发部', 30, '销售部', '未知部门') 部门 from emp;
分组函数
count、avg、min、max、sum
如果数据库表中没有记录,count(*)返回的不是null,而是0
可使用NVL()函数强制分组函数处理空值
select avg(nvl(comm, 0)) from emp;
select deptno, job, avg(sal)
from emp where hiredate >= to_date('1981-05-01','yyyy-mm-dd')
group by deptno,job
having avg(sal) > 1200
order by deptno,job;