发布时间:2025-11-05 02:45:39 来源:创站工坊 作者:IT科技类资讯
函数 是据库指一段可以直接被另一段程序调用的程序或代码。 也就意味着,函数这一段程序或代码在MySQL中已经给我们提供了,样使用我们要做的据库就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 那么,函数函数到底在哪儿使用呢?样使用
我们先来看两个场景:

1). 在企业的OA或其他的人力系统中,经常会提供的据库有这样一个功能,每一个员工登录上来之后都能够看到当前员工入职的函数天数。而在数据库中,样使用存储的据库都是入职日期,如2000-11-12,函数那如果快速计算出天数呢?样使用
2). 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,据库存储的函数是学生的分数值,如98/75,样使用如何快速判定分数的云服务器提供商等级呢?其实,上述的这一类的需求呢,我们通过MySQL中的函数都可以很方便的实现。
MySQL中的函数主要分为以下四类:字符串函数、数值函数、日期函数、流程函数。
字符串函数MySQL中内置了很多字符串函数,常用的几个如下:

演示如下:
A. concat : 字符串拼接
复制select concat(Hello , MySQL);1.B. lower : 全部转小写
复制select lower(Hello);1.C. upper : 全部转大写
复制select upper(Hello);1.D. lpad : 左填充
复制select lpad(01, 5, -);1.E. rpad : 右填充
复制select rpad(01, 5, -);1.F. trim : 去除空格
复制select trim( Hello MySQL );1.G. substring : 截取子字符串
复制select substring(Hello MySQL,1,5);1.案例:

由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001。
复制update emp set workno = lpad(workno, 5, 0);1.处理完毕后, 具体的数据为:

常见的数值函数如下:

演示如下:
A. ceil:向上取整
复制select ceil(1.1);1.B. floor:向下取整
复制select floor(1.9);1.C. mod:取模
复制select mod(7,4); 11.D. rand:获取随机数
复制select rand();1.E. round:四舍五入
复制select round(2.344,2);1.案例:
通过数据库的函数,生成一个六位数的随机验证码。
思路: 获取随机数可以通过rand()函数,但是获取出来的随机数是在0-1之间的WordPress模板,所以可以在其基础上乘以1000000,然后舍弃小数部分,如果长度不足6位,补0。
复制select lpad(round(rand()*1000000 , 0), 6, 0);1. 日期函数常见的日期函数如下:

演示如下:
A. curdate:当前日期
复制select curdate();1.B. curtime:当前时间
复制select curtime();1.C. now:当前日期和时间
复制select now();1.D. YEAR , MONTH , DAY:当前年、月、日
复制select YEAR(now()); select MONTH(now()); select DAY(now());1.2.3.E. date_add:增加指定的时间间隔
复制select date_add(now(), INTERVAL 70 YEAR );1.F. datediff:获取两个日期相差的天数
复制select datediff(2021-10-01, 2021-12-01);1.案例:
查询所有员工的入职天数,并根据入职天数倒序排序。入职天数,就是通过当前日期 - 入职日期,所以需要使用datediff函数来完成。
复制select name, datediff(curdate(), entrydate) as entrydays from emp order by entrydays desc;1.2. 流程函数流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。

演示如下:
A. if
复制select if(false, Ok, Error);1.B. ifnull
复制select ifnull(Ok,Default); select ifnull(,Default); select ifnull(null,Default);1.2.3.C. case when then else end
需求: 查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市)
复制select name, ( case workaddress when 北京 then 一线城市 when 上海 then 一线城市 else 二线城市 end ) as 工作地址 from emp;1.2.3.4.5.案例:
复制create table score( id int comment ID, name varchar(20) comment 姓名, math int comment 数学, english int comment 英语, chinese int comment 语文 ) comment 学员成绩表; insert into score(id, name, math, english, chinese) VALUES (1, Tom, 67, 88, 95 ), (2, Rose , 23, 66, 90),(3, Jack, 56, 98, 76);1.2.3.4.5.6.7.8.9.具体的SQL语句如下:
复制select id, name, (case when math >= 85 then 优秀 when math >=60 then 及格 else 不及格 end ) 数学, (case when english >= 85 then 优秀 when english >=60 then 及格 else 不及格 end ) 英语, (case when chinese >= 85 then 优秀 when chinese >=60 then 及格 else 不及格 end ) 语文 from score;1.2.3.4.5.6.7.8.9.10.MySQL的常见函数我们学习完了,那接下来,我们就来分析一下,在前面讲到的两个函数的案例场景,思考一下需要用到什么样的免费源码下载函数来实现?
1). 数据库中,存储的是入职日期,如 2000-01-01,如何快速计算出入职天数呢? -------->
答案: datediff
2). 数据库中,存储的是学生的分数值,如98、75,如何快速判定分数的等级呢? ---------->
答案: case ... when ...
随便看看