- 排序查询
- 字符函数
- 数字函数
- 日期函数
- 转换函数
- 通用函数
排序查询
升序 asc 默认为升序
降序 desc
格式:select 列1,列2,..,列n from [表名] where [筛选条件] order by [列名] desc|asc
例:查询员工表的员工信息按工资降序显示
select * from emp order by sal desc;
多列排序
例:查询员工表的员工信息 按照职位的字母顺序升序,并且按照工资降序
select * from emp order by job,sal desc;
字符函数
1.Upper:将字符串转换为大写
例:将abcd转换为大写字母
select upper(abcd) from dual;
2.Lower:转换为小写
例:将abcd转换为小写字母
select lower(abcd) from dual;
3.Initcap:首字母大写
例:查询员工表姓名将首字母大写
select initcap(ename) from emp;
4.Length:字符串长度
例:查询员工表的员工姓名的长度
select length(ename) from emp;
5.Replace:替换
例:查询员工表的姓名将姓名中有"A"的替换为"B"
select replace(ename,'A','B') from emp;
6.Substr:字符串截取
substr中一共有三个参数,第一个为要截取字段的列名,第二个为从第几个字符开始截取,正数
从开始截取,负数从末尾开始截取
第三个为截取几位,可忽略,若忽略的话会一直截取到末尾。
例:查询员工表姓名要求只显示前三位
select substr(ename,0,3) from emp;
注意:oracle中substr函数截取的时候下标从0或者从1开始,结果一样
数字函数
1.Round:四舍五入
例:保留2位小数,四舍五入
select round(sal/3,2) from emp;
2.Trunc:截取
例:select trunc(sal/3,2) from emp;
3.Mod:求余,取模
例:select mod(10,3) from dual;
4.Abs:绝对值
例:select abs(-10.23) from dual;
5.Ceil:向上取值
例:select ceil(10.23) from dual;
6.Floor:向下取值
例:select floor(10.23) from dual;
7.Sign:数字的正负(-1,0,1)
例:select sign(9) from dual;
例:select sign(-10) from dual;
例:select sign(0) from dual;
8.Sqrt:平方根
例:select sqrt(9) from dual;
日期函数
注意事项:
日期+数字=日期:若干天之后的日期
日期-数字=日期:若干天之前的日期
日期-日期=数字:两个日期之间的天数
1.系统当前时间 sysdate
例:查询系统当前时间
select sysdate from dual;
2.Last_day(日期):当月最后一天
select last_day(sysdate) from dual;
3.Next_day(日期,星期几) 以给定日期为为准,下一个指定星期几的日期
select next_day(sysdate,'星期六') from dual;
4.Add_months(日期,数字) 若干个月之后的日期
例:以当前日期为准,往后一个月的日期
select add_months(sysdate,1) from dual;
5.Months_between(日期1,日期2):两个日期之间的月数
例:显示一年有多少个月
select months_between(to_date('2018-01-01','yyyy-mm-dd'),to_date('2018-12-31','yyyy-mm-dd')) from dual;
转换函数
1.To_date(字符串,格式字符串):将字符串变成date类型的数据
To_date(‘1991-9-9’,’yyyy-mm-dd’)
例:插入生日日期
insert into table value('张三',to_date('1999-1-12','yyyy-mm-dd'));
2.To_char(字符串|列,格式字符串):将日期或数字变成字符串类型显示
例子:求在1981年被雇佣的人员信息
select * from emp where to_char(hiredate,'yyyy')=1981;
通用函数
Nvl:处理空值
若某一列为空值时 需要进行运算操作 可以使用nvl(列名,null,0)处理 将空值变为0
Decode:多数值判断 if-else
把emp表中职位的英文显示成对应的中文
select empno,ename,job,
decode(job,'CLERK','办事员','SALESMAN','销售员','ANALYST','分析员')
from emp;