数据库(MySQL)—— 函数

ops/2024/10/18 5:39:18/

数据库(MySQL)—— 函数

  • 字符串函数
  • 数值函数
  • 日期函数
  • 流程函数

我们今天来看MySQL中为我们提供了哪些函数:

MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

字符串函数

函数功能
CONCAT(S1, S2, …, Sn)字符串拼接,将S1,S2,… Sn拼接成一个字符串
LOWER(str)将字符串str全部转为小写
UPPER(str)将字符串str全部转为大写
LPAD(str, n, pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str, n, pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str)去掉字符串头部和尾部的空格
SUBSTRING(str, start, len)返回从字符串str从start位置起的len个长度的字符串

我们举一些例子:

concat : 字符串拼接

select concat('Hello' , ' MyLove');

在这里插入图片描述

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);

在这里插入图片描述我们拿以前的emp表举个例子:

由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001。

update emp set workno = lpad(workno, 5, '0');

在这里插入图片描述

数值函数

函数功能
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x, y)返回x除以y的余数(模)
RAND()生成一个0到1之间的随机数
ROUND(x, y)对x进行四舍五入,保留到小数点后y位

举几个例子:
ceil:向上取整

select ceil(1.1);

在这里插入图片描述floor:向下取整

select floor(1.9);

在这里插入图片描述
mod:取模

select mod(7,4);

在这里插入图片描述 rand:获取随机数

select rand();

在这里插入图片描述round:四舍五入

select round(2.344,2);

在这里插入图片描述

比如我们想生成一个六位数的验证码:

select lpad(round(rand()*1000000 , 0), 6, '0');

在这里插入图片描述

日期函数

函数功能
CURDATE()返回当前日期
CURTIME()返回当前时间
NOW()返回当前日期和时间
YEAR(date)获取指定日期的年份
MONTH(date)获取指定日期的月份
DAY(date)获取指定日期的日
DATE_ADD(date, INTERVAL expr type)返回一个日期/时间值加上特定时间间隔后的日期/时间值
DATEDIFF(date1, date2)返回date1和date2之间的时间差,单位为天

curdate:当前日期
在这里插入图片描述curtime:当前时间

select curtime(); 1

在这里插入图片描述 now:当前日期和时间

select now();

在这里插入图片描述 YEAR , MONTH , DAY:当前年、月、日
在这里插入图片描述date_add:增加指定的时间间隔

select date_add(now(), INTERVAL 70 YEAR );

在这里插入图片描述 datediff:获取两个日期相差的天数

select datediff('2023-10-01', '2022-12-01');

在这里插入图片描述比如:查询所有员工的入职天数,并根据入职天数倒序排序。

-- 入职天数
select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;

在这里插入图片描述

流程函数

流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率:

函数功能
IF(value, t, f)如果value为真,则返回t,否则返回f
IFNULL(value1, value2)如果value1非空,则返回value1,否则返回value2
CASE WHEN [val1] THEN [res1] … ELSE [default] END如果val1为真,则返回res1,… 否则返回default默认值
CASE [expr] WHEN [val1] THEN [res1] … ELSE [default] END如果expr的值等于val1,则返回res1,… 否则返回default默认值

if

select if(false, 'Ok', 'Error');

在这里插入图片描述ifnull

select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');

在这里插入图片描述这里注意,这里的空指的是null,不是指一个空字符,或者空字符串,所以第二条select会返回 ’ '。

case when then else end

查询emp表的员工姓名和工作地址 (北京/上海 ----> 一线城市 , 其他 ----> 二线城市

select name ,(case workaddress when '北京' then '一线城市'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);

我们要分别查询他们每科的成绩,并根据他们的成绩来划分成绩等级(优秀,及格,不及格)

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;

在这里插入图片描述


http://www.ppmy.cn/ops/37994.html

相关文章

6.Nginx

Nginx反向代理 将前端发送的动态请求有Nginx转发到后端服务器 那为何要多一步转发而不直接发送到后端呢? 反向代理的好处: 提高访问速度(可以在nginx做缓存,如果请求的是同样的接口地址,这样就不用多次请求后端&#…

LeetCode763:划分字母区间

题目描述 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 …

Unity初级---初识生命周期

1. Awake() :唤醒函数,最先执行的函数,只执行一次,当脚本文件挂载的对象被激活时调用 2. OnEnable() ,OnDisable():当脚本启用和禁用时触发,可执行多次,触发的前提是脚本挂载的对象…

第四十节实现主人公的技能释放功能(二)实现技能按钮

看看我们今天要实现的效果是,当我们按下数字1快捷键,我们的技能按钮会进入倒计时,如下图演示: 一、新建场景和根节点设置 新建场景,选择TextureButton作为根节点,重名为SpellButton,保存场景…

制造版图大变革!逾10座晶圆厂蓄势待发 | 百能云芯

在全球半导体产业的激烈竞争和市场需求的复杂波动中,晶圆厂建设热潮正在美国兴起,这一波建设浪潮的核心动力之一,便是美国政府推出的《芯片与科学法案》所承诺的巨额补贴,旨在提升美国在全球半导体行业的竞争力。 当地时间4月25日…

88、动态规划-乘积最大子数组

思路: 首先使用递归来解,从0开始到N,每次都从index开始到N的求出最大值。然后再次递归index1到N的最大值,再求max。代码如下: // 方法一:使用递归方式找出最大乘积public static int maxProduct(int[] num…

3.处理数据

处理数据 写在前面1.变量整型char类型bool类型浮点型类型分类 2.算术运算符除模 3.类型转换总结 写在前面 关于看书。其实我已经很久没看过书了,最近一次长时间看书还要追述到大学的时候,那时候上面都没有,就是有时间。原本我其实很爱看书的…

深度学习常用优化算法笔记介绍,各种梯度下降法详细介绍

优化算法 mini-batch梯度下降法 当一个数据集其数据量非常大的时候,比如上百万上千万的数据集,如果采用普通的梯度下降法,那么运算速度会非常慢,因为如果使用梯度下降法在每一次迭代的时候,都需要将这整个上百万的数…