1、字符串函数
1.1 概念
指一段可以直接被另一段程序直接调用的程序或者代码
1.2 应用场景
1.3 常用的字符串函数
1.4 语法
SELECT 函数(参数);
1.5 案例
案例1: concat()
select concat("Hello","MYSQL");
执行结果:
案例2: lower()
select lower("Hello");
执行结果:
案例3: upper()
select upper("hello");
案例4: lpad()
select lpad("01",5,"-");
案例5: rpad()
select rpad("01",5,"-");
案例6: trim()
select trim(" Hello MYSQL ")
案例7: substring()
// 注意索引是从1开始的
select substring("Hello MYSQL",1,5);
练习1: 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0,比如1号员工的工号应该为00001
update emp set workno = lpad(workno,5,"0");
2、数值函数
2.1 常见的数值函数
2.2 案例
案例1:ceil(x) 向上取整
// 返回 2
select ceil(1.5);
// 返回 2
select ceil(1.1);
案例2:floor(x) 向下取整
// 返回 1
select floor(1.9);
// 返回 1
select floor(1.1);
案例3:mod(x,y) 返回x/y的模
// 6/4 取余 ----> 2
select mod(6,4)
案例4:rand() 返回0-1内的随机数
select rand();
案例5: round(x,y) 求参数x的四舍五入的值,保留y位小数
select round(2.344,2);
案例6:通过数据库的函数,生成一位6位数的随机验证码
select lpad(round(rand()*1000000),6,"0");
3、日期函数
3.1 常见的日期函数
3.2 案例
案例1:查询所有员工的入职天数,并根据入职天数进行倒序排序
第一步:列出入职天数
select name datediff(currentDate(),entrydate) from emp;
第二步 使用别名进行排序
select name datediff(currentDate(),entrydate) as "entrydays" from emp order by entrydays desc;
4、流程函数
主要用于条件筛选,提高语句的效率。
4.1 常见的流程函数
4.2 案例
案例1:if(value,t,f),value为true返回t,value为false返回f
select if(true,"OK","Error");
案例2:ifnull(value1,value2),value1不为空(null)返回value1,否则返回value2
select ifnull("OK","Default");
案例3:case when [val1] then [res1] else [default] end,如果val1为true,返回res1,否则返回default
查询emp表的员工姓名和工作地址(如果员工地址是上海或者北京,则展示一线城市,否则展示二线城市)
select name,(case workaddress when "北京" then "一线城市" when "上海" then "一线城市" else "二线城市" end) as “工作地址” from emp;
案例4: 统计班级各个学员的成绩,展示规则如下:
- >=85,展示优秀
- >=60,展示及格
- 否则,展示不及格
score表已经提供
select
id,
name,
(case when math >=85 then "优秀" when math >=60 then "及格" else "不及格" end ) as "数学",
(case when english >=85 then "优秀" when english >=60 then "及格" else "不及格" end ) as "英语",
(case when chinese >=85 then "优秀" when chinese >=60 then "及格" else "不及格" end ) as "语文"
from score;