lower() 转换为小写
select lower(ename) as ename from emp;
upper() 转换为大写
seclect upper(ename) as ename from emp;
substr()截取子串
- 语法 substr(被截取的字段名,起始下标,截取长度),起始下标从1开始
查询并显示姓名的第二个字母
select substr(ename,2,1) from emp;
查询姓名中第二个字母为a的员工
select ename from emp where substr(ename,2,1) = 'a';
回顾一下like(上一篇模糊查询)
select ename form emp where like '_a%';
length()获取字段长度
select ename,length(ename) as namelength from emp where name
ifnull()空值处理
- 该函数接受连个参数:ifnull(字段名,替换值)
- 在数据库中,有Null参与数学运算的结果一定为Null;为了防止计算结果出现Null,建议使用ifnull()方法预处理。
查询补助,如果补助为Null设置为0;
select ifnull(comm,0) from emp;
查询员工的一年总薪水(sal工资+comm补助)
select ename,(sal+ifnull(comm,0)*12) as totaSal from emp;
没有补助的员工,每月补助100,求员工的年薪
select ename, (sal + ifnull(comm,100)) * 12 as yearsal from emp;
case…when…then…else…end (case匹配那个字段,when当匹配的字段为…then那么…,eles其余的情况…end结束)
匹配工作岗位job,当为MANAGER时,薪水上调10%,当为SALESMAN时,薪水上调50%,其它岗位薪水不变。
select ename,sal,job,
(case job
when 'MANAGER' then sal *1.1
when 'SALESMAN' then sal *1.5
else sal
end)
from emp;
trim()出去收尾空格
取得工作岗位job为manager的所有员工
select ename,sal,job from emp where job = trim(' manager ')
round()四舍五入
- 该函数接受连个参数round(处理字段,保留几位小数)
查看员工薪水sal保留1位小数:
select round(sal,1) as sal from emp;
rand()生成随机数
生成一个随机数
select rand();
生成多个随机数
select ename,rand() from emp;
str_to_date()字符串转日期
- 该函数接受连个参数,str_to_date(‘日期字符串’,‘日期格式’)
- 日期格式可包含
- 2016-06-15;2016/06/15;20160615这三种格式
- %Y 代表四位的年份
- %y 代表两位的年份
- %m 代表月,格式(01 … 12)
- %c 代表月,格式(1 … 12)
- %d 代表日
- %H 代表24小时制
- %h 代表12小时制
- %i 代表分种,格式(00 … 59)
- %S或%s 代表秒 , 格式(00…59)
查询出入职时间hiredate为1981-12-03入职的员工:
select ename,hiredate from emp where hiredate = '1981-12-03';
使用str_to_date()函数查询02-20-1981年入职的员工(将02-20-1981需要转换为1981-02-20)才可以识别
select ename,hiredate from emp where hiredate = str_to_date('02-20-1981','%m-%d-%Y');
date_format()格式化日期
- 该函数接受连个参数,date_format(日期类型数据,‘时间格式’)
查询员工的入职日期,以’10-12-1980’的格式显示到窗口中
select ename,date_format(hiredate,'%m-%d-%Y') as hiredate from emp ;