使用函数的目的是为了操作数据,将输入的变量处理,返回一个结果。变量可以有好多。
传入的变量可以是列的值,也可以是表达式。函数可以嵌套。内层函数的结果是外层函数的变量。 函数分为:
1、单行函数:每一行都有一个返回值,但可以有多个变量。
2、多行函数:多行有一个返回值。
【【 单行函数的分类 】】:
- 字符操作函数
- 数字操作函数
- 日期操作函数
- 数据类型转换函数、
5、综合数据类型函数
实验13:字符串的大小写函数
SQL > Select lower(ename),upper(ename),initcap(ename) from emp;
【点评】:字符串的大小写操作
大小写操作函数 Lower(大写)、upper(小写)、initcap(首字母大写)
实验14:字符串操作函数
1、【Concot 拼接】
SQL > select ename, job, concat(ename,job) from emp;
2、【length 长度】
SQL > select length('张三') from dual; --按照字
SQL > select lengthb('张三') from dual; --按字节
SQL > select lengthc('张三') from dual; --unicode 的长度
3、【substr 截取】
SQL > select ename, substr(ename, 1, 1) "first", substr(ename, -1) "last" f rom emp;
4、【instr 求位置】
SQL > select ename, instr(ename, 'A') "A 在第几位" from emp;
6、【replace 替换】
SQL > Select replace (‘JACK and JUE', 'J', 'BL' ) from dual;
7、【lpad 左铺垫】
SQL > select lpad (ename, 20, '-' ) ename from emp;
8、【rpad 右铺垫】
select rpad (ename, 20, '-' ) ename from emp;
实验15:分组统计函数
1、【sum 求和】
SQL > select sum(sal) from emp;
2、【min 求最小值】
SQL > select min(sal) from emp;
3、【max 求最大值】
SQL > select max(sal) from emp;
4、【avg 求平均值】
SQL > select avg(sal) from emp;
5、【count 求总数】
SQL > select count(sal) from emp;
6、【null值?】
SQL > select count(*), count(comm) from emp;
【点评】:所有组函数,除了 count(*) 以外,都忽略 null 值,count 是计数,查看有多 少行,count(列)是查看该列有多少非空的行。
- 【Group by 子句】
SQL > select deptno, sum(sal) from emp group by deptno;
【点评】:按照部门号码分组,同组的进行统计。9i 需要排序,10g以后不需要排序
8、【having的使用】
问题:要求只显示平均工资大于2000的工作?
错解:select job, avg(sal) from emp where avg(sal)>2000 group by job;
【解析】:这句话不会运行,where 是条件,avg(sal)是结果。 条件中就使用了结果,违反了因果关系。不但 ORACLE 完成不了您的需求,我们人类的认知阶段就实现不了。
正解:select job, avg(sal) from emp group by job having avg(sal)>2000;
【解析】:Having 是在结果中再次筛选。having 一定得出现在 group by 子句得后面。不能独立存在
9、【decode函数】:巧用 decode 函数,改变排版方式
SQL > select sum(decode (to_char (hiredate, 'yyyy'), '1980', 1, 0)) "1980",
sum(decode(to_char(hiredate,'yyyy'),'1981',1,0)) "1981",
sum(decode(to_char(hiredate,'yyyy'),'1982',1,0)) "1982",
sum(decode(to_char(hiredate,'yyyy'),'1987',1,0)) "1987",
count(ename) "总人数" from emp;
【执行结果】: 1980 1981 1982 1987 总人数
1 10 1 0 12
【【 总结 】】
1、组函数
2、分组统计
3、NULL 值在组函数中的作用
2、HAVING 的过滤作用
5、组函数的嵌套