聚合函数
sum() 求平均
avg() 求和
count() 数量
max() 最大值
min() 最小值
- dual 虚表,没有实际意义,为了不全select的语法
例:select * from dual;
select 245346+234657 from dual;
- nvl() 处理空值 *
例:nvl(列,值1) 若该列为空,则返回值1,否则返回该列值本身
select nvl(comm,0) from emp;
- 数值类型函数
- abs() 返回绝对值
例:select abs(12),abs(-12),abs(0) from dual;- sign() 判断正负,返回结果只有三种情况 -1,0,1
例:select sign(12),sign(-12),sign(0) from dual;- ceil() 和 floor() 前者返回大于它的最小整数,后者返回小于它的最大的整数(数轴)
例:select ceil(3.14),floor(3.14) from dual;
select ceil(-3.14),floor(-3.14) from dual;- mod(x,y) 取余函数,常用场景:判断奇偶 *
例select mod(5,2) from dual;- round(x,y) 和 trunc(x,y)
前者四舍五入,后者直接截取 y指保留的精度 select round(145.567,2) from dual;
- 字符类型函数
- concat() 连接两个字符串(只能连接两个字符串) || 连接符(不限制个数)*
例1:select concat(empno,ename) from emp;
例2:select concat(empno,ename)||sal||comm from emp;
例3:select concat('你好: ',ename) from emp;- upper()/lower()/initcap() 转换字符串为大写/小写/首字母大写,其他字母小写
例1:select upper(‘asdfZXCV’) from dual;
例2:select lower(‘asdfZXCV’) from dual;- length() 字符串的长度 *
例1:select ename,length(ename) from emp;
例2:select length(’ asdf ') from dual;
注:空格算一位- trim()/ltrim()/rtrim() 去字符串两端的空格/左边/右边 *
例:select trim(’ asd f ‘),ltrim(’ asd f ‘),rtrim(’ asd f ') from dual;- replace(目标字符串,要查找的值,目标值) 替换函数 *
例1:select replace(’ asd f ‘,’ ‘,’’) from dual;
例2:将员工姓名中S替换成s
select ename,replace(ename,‘S’,‘s’) from emp;
例3:将员工姓名中的E去掉
select ename,replace(ename,‘E’) from emp;- substr(目标字符串,从第几位开始,截取多少位) 截取函数 **
注:如果不写截取多少位,则默认截取到最后
例1:‘asdfghjklasdfrtyuio’ 找出 ‘dfgh’
例2:截取部门地址的后两位
select loc,substr(loc,length(loc)-1) from dept;- instr(目标字符串,目标,从第几个开始,查第几个) 找出目标所在的位置 **
select instr(‘asdfghjklasdfrtyuio’,‘a’,1,2) from dual;
- 日期类型函数
日期-日期=天数
- sysdate 系统日期 yyyy-mm-dd hh:mm:ss / localtimestamp 时间戳
例:select sysdate from dual;- add_months (date,n) 返回在日期的基础上加N个月后的新日期
例:select sysdate,add_months(sysdate,3) from dual;
展示员工表中员工的转正日期(6个月试用)
例:select hiredate,add_months(hiredate,6) from emp;- last_day() 每个月的最后一天
例:select last_day(sysdate) from dual;- months_between(日期1,日期2) 两个日期相隔的月数 日期1-日期2
例:select months_between(sysdate,hiredate) from emp;- round() /trunc() 以每天中午12点为临界点
例:select round(sysdate) from dual;
- 转换函数
1) to_char() 字符转换函数
2) to_date 日期转换函数
例:找出1980/12/17入职的员工
select * from emp where hiredate = to_date(‘1980/12/17’,‘yyyy/mm/dd’);
3) to_number() 隐式转换 数字转换函数