3-函数
1.概述
函数: 是指一段可以直接被另一段程序调用的程序或代码。
使用场景:
- 在企业的 OA 或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能 够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2000-11-12,那如果快速计 算出天数呢?
- 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的 分数值,如 98/75,如何快速判定分数的等级呢?
其实,上述的这一类的需求呢,我们通过 MySQL 中的函数都可以很方便的实现 。
MySQL 中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。
2. 字符串函数
MySQL 中内置了很多字符串函数,常用的几个如下:
演示如下:
1. concat : 字符串拼接
语法:
1 | select concat('Hello' , ' MySQL'); |
执行结果:
2. lower : 全部转小写
语法:
1 | select lower('Hello'); |
执行结果:
3. upper : 全部转大写
语法:
1 | select upper('Hello'); |
执行结果:
4. lpad : 左填充
语法:
1 | select lpad('01', 5, '-'); |
意思是 : 在字符串 01 的左边填充 - 然后填充的字符串加上 01 刚好有五个字符串
结果显示:
5. rpad : 右填充
语法:
1 | select rpad('01', 5, '-'); |
结果显示:
6. trim : 去除空格
语法:
1 | select trim(' Hello MySQL '); |
结果显示:
7. substring : 截取子字符串
语法:
1 | select substring('Hello MySQL',1,5); |
结果显示:
3. 数值函数
常见的数值函数如下:
演示如下:
1. ceil:向上取整
语法:
1 | select ceil(1.1); |
结果显示:
2. floor:向下取整
语法:
1 | select floor(1.9); |
结果显示:
3. mod:取模
语法:
1 | select mod(7,4); |
我的理解:前面的数除以后面的数然后进行取余
结果显示:
4. rand:获取随机数
语法:
1 | select rand(); |
结果显示:
5. round:四舍五入
语法:
1 | select round(2.344,2); |
个人理解:round() 函数 , 后面的数字是多少就前面的数字就保留多少位小数
结果显示:
4.日期函数
常见的日期函数如下:
演示如下:
1. curdate:当前日期
语法:
1 | select curdate(); |
结果显示:
2. curtime:当前时间
语法:
1 | select curtime(); |
结果显示:
3. now:当前日期和时间
语法:
1 | select now(); |
结果显示:
4. YEAR , MONTH , DAY:当前年、月、日
语法:
1 | select YEAR(now()); |
结果显示:
5. date_add:增加指定的时间间隔
语法:
1 | select date_add(now(), INTERVAL 70 YEAR ); |
结果显示:
6. datediff:获取两个日期相差的天数
语法:
1 | select datediff('2021-10-01', '2021-12-01'); |
结果显示:
5. 流程函数
流程函数也是很常用的一类函数,可以在 SQL 语句中实现条件筛选,从而提高语句的效率。
演示如下:
1. if
- IF(value , t , f) , 如果 value 为 true,则返回 t,否则返回 f
语法:
1 | select if(false, 'Ok', 'Error') |
结果显示:
2. ifnull
- IFNULL(value1 , value2) , 如果 value1 不为空,返回 value1,否则 返 value2
语法:
1 | select ifnull('Ok','Default'); |
结果显示:
value 不为空
valuel 为空
3. case when then else end
- CASE WHEN [ val1 ] THEN [res1] … ELSE [ default ] END , 如果 val1 为 true,返回 res1,… 否 则返回 default 默认值
需求:
查询 emp 表的员工姓名和工作地址 (北京/上海 ——> 一线城市 , 其他 ——> 二线城市)
1 | select |
案例:
1 | create table score( |
具体的 SQL 语句如下:
1 | select |
结果显示:







