Oracle学习笔记 -- day04 单行函数字符、单行函数转换、多行函数
2017-08-23 21:55
218 查看
注意:oracle函数大全文档详见资源处
select * from dual
select 1+1 from dual
select * from emp
'jagflkascaas' agf 替换成 XXX
select replace('jagflkascaas','agf','XXX') from dual
substr--截取 --开始位置0和1是一样的
'jagflkascaas' 取出gflkascaas
select substr('jagflkascaas',3) from dual --agflkascaas
'jagflkascaas' 取出jag
select substr('jagflkascaas',1,3) from dual
select substr('jagflkascaas',0,3) from dual
concat--连接
'aaaa','bbbb'
select 'aaaa','bbbb' from dual
select 'aaaa'||'bbbb' from dual
select concat('aaaa','bbbb','CCC') from dual --只能有两个参数
length--长度
select length('qwer') from dual
select round(56.349) from dual --56
select round(56.549) from dual --57
select round(56.349,2) from dual--56.35
select round(56.349,-1) from dual--60
select round(53.349,-1) from dual--50
trunc--截断
select trunc(56.349) from dual --56
select trunc(56.549) from dual --56
select trunc(56.349,2) from dual--56.34
select trunc(56.349,-1) from dual--50
select trunc(53.349,-1) from dual--50
mod --取余
select mod(10,3) from dual
select mod(10,2) from dual
select mod(10,0) from dual--10
当前时间 sysdate
select sysdate from dual
查询3个月以后的时间
select add_months(sysdate,3) from dual
select add_months(sysdate,-3) from dual
select add_months(sysdate,1) from dual
时间是可以相加减的
时间-时间=数值 数值的单位是:天
时间+数值=时间
--计算每个员工的入职天数 -- sysdate:当前系统时间
select empno,ename,hiredate , sysdate-hiredate from emp
--计算每个员工的入职月数
months_between -- 计算两个日期之间的月份差 参数1:当前时间 参数2:要计算的初始时间
select empno,ename,hiredate , months_between(sysdate,hiredate) from emp
--查询1980-01-01到1985-12-31入职的员工
select * from emp where hiredate between to_date('1980-01-01','yyyy-MM-dd')
and to_date('1985-12-31','yyyy-MM-dd')
to_char
select to_char(sysdate,'yyyy-MM-dd') from dual
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
select
to_char(sysdate,'yyyy'),
to_char(sysdate,'mm'),
to_char(sysdate,'dd'),
to_char(sysdate,'day') --星期
from dual
--查询1980和1987入职的员工
select * from emp where to_char(hiredate,'yyyy')='1980' or to_char(hiredate,'yyyy')='1987'
to_number -- 不重要
select 'abc'+'abc' from dual -- 报错
select '123'+'123' from dual
select * from emp where deptno='30'
select sal*12+nvl(comm,0) from emp
decode --类似于条件表达式 只有Oracle有
select job,decode(job,
'CLERK','业务员',
'SALESMAN','销售员',
'其他'
) from emp
--case表达式,重要
语法:case 字段 when 值 then 显示的值.....end
-- 使用表达式
select job,
case job
when 'CLERK' then '业务员'
when 'SALESMAN' then '销售员'
else '其他'
end,
-- 使用decode表达式
decode(job,
'CLERK','业务员',
'SALESMAN','销售员',
'其他'
) from emp
count sum avg max min
分组:group by
查询每个部门的平均工资
select deptno ,avg(sal) from emp group by deptno
查询每个部门的最高工资
select deptno ,max(sal) from emp group by deptno
查询每个部门的最低工资
select deptno ,min(sal) from emp group by deptno
查询每个部门的人数
select deptno ,count(*) from emp group by deptno
查询每个部门的总工资
select deptno ,sum(sal) from emp group by deptno
查询部门的最低工资大于800的部门编号
select deptno ,min(sal) from emp group by deptno having min(sal)>800
where (前)
group by (中)
having (后)
一、单行函数之字符函数
1、伪表
--dual 伪表 目的:配合查询select * from dual
select 1+1 from dual
select * from emp
2、字符函数
replace--替换'jagflkascaas' agf 替换成 XXX
select replace('jagflkascaas','agf','XXX') from dual
substr--截取 --开始位置0和1是一样的
'jagflkascaas' 取出gflkascaas
select substr('jagflkascaas',3) from dual --agflkascaas
'jagflkascaas' 取出jag
select substr('jagflkascaas',1,3) from dual
select substr('jagflkascaas',0,3) from dual
concat--连接
'aaaa','bbbb'
select 'aaaa','bbbb' from dual
select 'aaaa'||'bbbb' from dual
select concat('aaaa','bbbb','CCC') from dual --只能有两个参数
length--长度
select length('qwer') from dual
3、数值函数
round --四舍五入select round(56.349) from dual --56
select round(56.549) from dual --57
select round(56.349,2) from dual--56.35
select round(56.349,-1) from dual--60
select round(53.349,-1) from dual--50
trunc--截断
select trunc(56.349) from dual --56
select trunc(56.549) from dual --56
select trunc(56.349,2) from dual--56.34
select trunc(56.349,-1) from dual--50
select trunc(53.349,-1) from dual--50
mod --取余
select mod(10,3) from dual
select mod(10,2) from dual
select mod(10,0) from dual--10
4、日期函数
add_months(时间,数值)当前时间 sysdate
select sysdate from dual
查询3个月以后的时间
select add_months(sysdate,3) from dual
select add_months(sysdate,-3) from dual
select add_months(sysdate,1) from dual
时间是可以相加减的
时间-时间=数值 数值的单位是:天
时间+数值=时间
--计算每个员工的入职天数 -- sysdate:当前系统时间
select empno,ename,hiredate , sysdate-hiredate from emp
--计算每个员工的入职月数
months_between -- 计算两个日期之间的月份差 参数1:当前时间 参数2:要计算的初始时间
select empno,ename,hiredate , months_between(sysdate,hiredate) from emp
二、单行函数之转换函数
1、转换函数
to_date--查询1980-01-01到1985-12-31入职的员工
select * from emp where hiredate between to_date('1980-01-01','yyyy-MM-dd')
and to_date('1985-12-31','yyyy-MM-dd')
to_char
select to_char(sysdate,'yyyy-MM-dd') from dual
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
select
to_char(sysdate,'yyyy'),
to_char(sysdate,'mm'),
to_char(sysdate,'dd'),
to_char(sysdate,'day') --星期
from dual
--查询1980和1987入职的员工
select * from emp where to_char(hiredate,'yyyy')='1980' or to_char(hiredate,'yyyy')='1987'
to_number -- 不重要
select 'abc'+'abc' from dual -- 报错
select '123'+'123' from dual
select * from emp where deptno='30'
2、通用函数
nvl -- 滤空函数select sal*12+nvl(comm,0) from emp
decode --类似于条件表达式 只有Oracle有
select job,decode(job,
'CLERK','业务员',
'SALESMAN','销售员',
'其他'
) from emp
--case表达式,重要
语法:case 字段 when 值 then 显示的值.....end
-- 使用表达式
select job,
case job
when 'CLERK' then '业务员'
when 'SALESMAN' then '销售员'
else '其他'
end,
-- 使用decode表达式
decode(job,
'CLERK','业务员',
'SALESMAN','销售员',
'其他'
) from emp
三、多行函数
1、多行函数
多行函数 聚合函数 组函数count sum avg max min
分组:group by
查询每个部门的平均工资
select deptno ,avg(sal) from emp group by deptno
查询每个部门的最高工资
select deptno ,max(sal) from emp group by deptno
查询每个部门的最低工资
select deptno ,min(sal) from emp group by deptno
查询每个部门的人数
select deptno ,count(*) from emp group by deptno
查询每个部门的总工资
select deptno ,sum(sal) from emp group by deptno
查询部门的最低工资大于800的部门编号
select deptno ,min(sal) from emp group by deptno having min(sal)>800
where (前)
group by (中)
having (后)
相关文章推荐
- Oracle学习记录1(单行函数,多行函数)
- 单行与多行函数
- Oracle学习记录1(单行函数,多行函数)
- Oracle学习笔记【02】:单行函数
- oracle的单行函数与多行函数。。。。
- Oracle学习记录1(单行函数,多行函数)
- Oracle学习记录1(单行函数,多行函数)
- ORACLE单行函数与多行函数之二:字符函数示例
- C语言宏定义函数的使用(定义单行和多行)
- Oracle学习记录1(单行函数,多行函数)
- oracle学习笔记单行函数
- Oracle学习记录1(单行函数,多行函数)
- 5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)
- 数据库之单行函数:字符函数,数字函数,日期函数,转换函数,通用函数,case表达式,decode函数
- 处理单行和多行函数
- Oracle学习记录1(单行函数,多行函数)
- css控制字符长度超出变成点点点显示(单行,多行)
- Oracle单行函数之字符函数
- Oracle学习记录1(单行函数,多行函数)
- Oracle单行函数之字符函数