网站怎么做微博链接,十堰网站建设u2028,wordpress商品主题,wordpress中文公司模板目录
函数概述
字符串函数
数值函数
日期函数
流程函数 函数概述
函数是指一段可以直接被另一段程序调用的程序或代码。也就意味着#xff0c;这一段程序或代码在MysQL中已经给我们提供了#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即…目录
函数概述
字符串函数
数值函数
日期函数
流程函数 函数概述
函数是指一段可以直接被另一段程序调用的程序或代码。也就意味着这一段程序或代码在MysQL中已经给我们提供了我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。那么函数到底在哪儿使用呢?
我们先来看两个场景: 在企业的OA或其他的人力系统中经常会提供的有这样一个功能每一个员工登录上来之后都能够看到当前员工入职的天数。而在数据库中存储的都是入职日期如2000-11-12那如果快速计算出天数呢?在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中存储的是学生的分数值如98/75如何快速判定分数的等级呢?
其实上述的这一类的需求呢我们通过MysQL中的函数都可以很方便的实现。
MysQL中的函数主要分为以下四类:字符串函数、数值函数、日期函数、流程函数。 字符串函数
MysQL中内置了很多字符串函数常用的几个如下: 演示如下 # concat 字符串拼接
select concat(Hello, MySQL);# lower 全部转为小写
select lower(Hello);# upper 全部转为大写
select upper(Hello);# lpad 左填充
select lpad(01,5,-);# rpad 右填充
select rpad(01,5,-);# trim 去除空格
select trim( Hello MySQL );# substring 截取子字符串
select substring(Hello MySQL,1,5); 案例 由于业务需求变更企业员工的工号统一为 5 位数目前不足 5 位数的全部在前面补 0 。比如 1 号员 工的工号应该为00001 。 update emp set workno lpad(workno, 5, 0); 处理完毕后 , 具体的数据为 : 数值函数 常见的数值函数如下 演示如下 # ceil 向上取整
select ceil(1.1); # floor 向下取整
select floor(1.9); # mod 取模
select mod(7,4); # rand 获取随机数
select rand(); # round 四舍五入
select round(2.344,2); 案例 通过数据库的函数生成一个六位数的随机验证码。 思路 获取随机数可以通过rand()函数但是获取出来的随机数是在0-1 之间的所以可以在其基础上乘以1000000 然后舍弃小数部分如果长度不足 6 位补 0 select lpad(round(rand()*1000000 , 0), 6, 0); 1 日期函数 常见的日期函数如下 演示如下 # curdate 当前日期
select curdate(); # curtime 当前时间
select curtime(); # now 当前日期和时间
select now(); # YEAR , MONTH , DAY 当前年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());# date_add 增加指定的时间间隔
select date_add(now(), INTERVAL 70 YEAR );# datediff 获取两个日期相差的天数
select datediff(2021-10-01, 2021-12-01); 案例 查询所有员工的入职天数并根据入职天数倒序排序。 思路 入职天数就是通过当前日期 - 入职日期所以需要使用 datediff 函数来完成。 select name, datediff(curdate(), entrydate) as entrydays from emp order by entrydays desc; 流程函数 流程函数也是很常用的一类函数可以在 SQL 语句中实现条件筛选从而提高语句的效率。 演示如下 # if
select if(false, Ok, Error);# ifnull
select ifnull(Ok,Default);
select ifnull(,Default);
select ifnull(null,Default);# case when then else end
# 需求: 查询emp表的员工姓名和工作地址 (北京/上海 ---- 一线城市 , 其他 ---- 二线城市)
select name,( case workaddress when 北京 then 一线城市 when 上海 then 一线城市 else 二线城市 end ) as 工作地址 from emp; 案例 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); 具体的 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;