函数:是指一段可以直接被另一段程序调用的程序或者代码。
字符串函数
MySQL中内置了很多字符串函数,常见的有:
函数 | 功能 | 例子 |
---|---|---|
CONCAT() | 连接字符串 | SELECT CONCAT('My', 'SQL'); → ‘MySQL’ |
LOWER() | 转换为小写 | SELECT LOWER('MySQL'); → ‘mysql’ |
UPPER() | 转换为大写 | SELECT UPPER('mysql'); → ‘MYSQL’ |
LPAD() | 左侧填充字符串 | SELECT LPAD('5', 3, '0'); → ‘005’ |
RPAD() | 右侧填充字符串 | SELECT RPAD('5', 3, '0'); → ‘500’ |
TRIM() | 去除字符串头尾两端空格 | SELECT TRIM(' MySQL '); → ‘MySQL’ |
SUBSTRING() | 截取子字符串 | SELECT SUBSTRING('MySQL', 3, 2); → ‘SQ’ |
示例:
– 由于业务需求变更,企业员工工号统一为5位数,目前不足5位数的全部在前面补0,比如:1号员工为:00001.
1 | update emp set workno = lpad(workno ,5,'0'); |
数值函数
常见得数值函数
函数名称 | 功能描述 | 示例 | 结果 |
---|---|---|---|
CEIL(x) | 向上取整 | SELECT CEIL(3.14); |
4 |
FLOOR(x) | 向下取整 | SELECT FLOOR(3.99); |
3 |
MOD(x,y) | 取余数 | SELECT MOD(10, 3); 10除3取余 |
1 |
RAND() | 随机数(0-1) | SELECT RAND(); |
0-1之间的随机数 |
ROUND(x,y) | 四舍五入 | SELECT ROUND(3.1415, 2); 保留2位小数 |
3.14 |
例题:
通过数据库的函数,生成一个七位数的随机验证码
1 | select RAND()*1000000; |
日期函数
常见的日期函数:
函数名称 | 功能描述 | 示例 | 结果示例 |
---|---|---|---|
NOW() | 当前日期和时间 | SELECT NOW(); |
2025-05-25 15:30:45 |
CURDATE() | 当前日期 | SELECT CURDATE(); |
2025-05-25 |
CURTIME() | 当前时间 | SELECT CURTIME(); |
15:30:45 |
YEAR() | 提取年份 | SELECT YEAR('2025-05-25'); |
2025 |
MONTH() | 提取月份 | SELECT MONTH('2025-05-25'); |
5 |
DAY() | 提取日 | SELECT DAY('2025-05-25'); |
25 |
DATE_ADD() | 日期加法 | SELECT DATE_ADD('2025-05-25', INTERVAL 3 DAY); |
2025-05-28 |
DATEDIFF(date1,date2) | 日期差(天数) | SELECT DATEDIFF('2025-05-26','2025-05-22'); |
4 |
案例:
查询所有员工的入职天数,并根据入职天数倒序排序。
1 | select name ,entrydate, datediff(curdate(),entrydate) from emp; |
MySQL 常用流程控制函数
以下是MySQL中常用的流程控制函数列表:
函数 | 语法 | 描述 | 示例 |
---|---|---|---|
IF() | IF(value, t, f) | 如果velue为true(非0且非NULL),返回t,否则返回f | SELECT IF(1>2, 'yes', 'no'); → ‘no’ |
IFNULL() | IFNULL(value1,value2) | 如果value1不为NULL,返回value1,否则返回value2 | SELECT IFNULL(NULL, 'default'); → ‘default’ |
NULLIF() | NULLIF(expr1, expr2) | 如果expr1=expr2返回NULL,否则返回expr1 | SELECT NULLIF(1,1); → NULL |
CASE | CASE WHEN [val1] THEN [res1]…..ELSE [default] END | 如果val1为true,返回res1,….否则返回default默认值 | SELECT CASE WHEN 1>2 THEN 'a' WHEN 2>1 THEN 'b' ELSE 'c' END; → ‘b’ |
CASE | CASE [expr] WHEN [val1] THEN [res1] … ELSE [default] END | 如果expr的值等于val1,则返回res1,…..否则返回default默认值 | SELECT CASE 2 WHEN 1 THEN 'a' WHEN 2 THEN 'b' ELSE 'c' END; → ‘b’ |
这些函数在MySQL查询中非常有用,可以用于条件判断、NULL值处理和复杂的逻辑分支。
case when then else end 的用法
– 需求:查询emp表的员工姓名和工作地址(上海/杭州—–> 一线城市,其他—-> 二线城市)
1 | select |
案例: 统计班里各个学员的成绩
展示的规则如下:
– >=85, 展示优秀
– >=60, 展示及格
– 否则 展示不及格
1 | select |