<> 单行函数:一次操作一行
<> 多行函数:一次操作多行
// 虚拟表 dual用于测试:单行单列 ->单行
单行函数: 字符函数 数值函数 日期函数 通用函数 转换函数
字符函数 :
- lower(xxx)、、、转换成小写字母
- upper(XXX) 、、、转换成大写字母
- initcap(Xxx) 、、、将首字母转换成大写字母
- substr(str,begin,len) :从1开始数 、、、字符串截取函数
- length()字符数 / lengthb() 字节数1、、、查看字符/字节数
- insrt(str,substr)从1开始数 、、、在str中找substr的位置
- trim(‘x’ from ‘xxxhelloxxx’)、、、去掉任意字符,空格可简写trim(“ hello ”)
- lpad(‘str’,num,‘&’)/rpad(‘str’,num,‘&’)、、、在str左/右填充num-length(str)个&
- . replace(‘hello’,‘ll’,‘%’)——>‘he%%o’、、、替换
数值函数:
- round(数字,n位数)、、、四舍五入 ,保留n位小数
- trunc(数字,n位数)、、、舍尾,保留n位小数
- mod(13,3)=1、、、求余
日期函数:
- sysdate、、、当前时间
a.日期±数字 (默认是天)
b.日期 - 日期
格式化: 日期->字符
to_char(日期,格式)
- months_between(日期1,日期2)、、、 日期1-日期2相差几月
- add_months(日期,月数)
- last_day(sysdate)、、、当月最大是第几天
- next_day(sysdate,‘星期五’) 、、、下一个星期n是哪一天
- round(日期,年/月/日)、、、对年/月/日四舍五入
- trunc(日期,年/月/日)、、、对年/月/日截取
通用函数 :
- nvl(a,b)/nvl2(a,b,c)、、、判断空值
- nullif(a,b)、、、a=b,返回null ,否则返回a
- coalesce(a,b)、、、从左往后 找到第一个不为null的值
- decode(字段,条件1,返回值1,条件2,返回2,…,最后表达式)‘、、、条件判断函数
、、、case when … then
、、、when … then
、、、else
、、、end ;
select ename ,job ,sal 涨前,case job
when 'PRESIDENT' then sal+1000
when 'MANAGER' then sal+500
else sal + 300 end
涨后
from emp ;
转换函数:
1. 隐式转换(自动)
2. 显式转换
多行函数(组函数、 聚合函数)
- count() 、、、统计,自动排除null
- max()、、、最大
- min()、、、最小
- avg()、、、平均
- sum()、、、求和
分组
select deptno,ename , avg(sal) from emp group by deptno
注意1 :
- 分组查询时,不在组函数(多行函数)中的列,必须在group by中。
–求各个部门中各个工作 的平均工资
//先根据部门分组 ,再根据job分组
select deptno,job,avg(sal) from emp group by deptno ,job ;
注意2:
- 对行筛选用where
- 对组进行筛选用Having
- 可以在Having使用多行函数count min avg
- 但是 不能在where中使用多行函数
英文/数字 占一个字节
中文/符号: utf-8编码格式下: 一个汉字/符号 占3个字节
gbk: 一个汉字/符号 占2个字节
可以查看当前系统编码格式:
select * from nls_database_parameters ; ↩︎