【MySQL | 基础篇】02、MySQL 函数详解

news2024/11/19 10:21:27

目录

一、字符串函数

1.1 concat : 字符串拼接

1.2 lower : 全部转小写

1.3 upper : 全部转大写

1.4 lpad : 左填充

1.5 rpad : 右填充

1.6 trim : 去除空格

1.7 substring : 截取子字符串

1.8 案例

二、数值函数

2.1 ceil:向上取整

2.2 floor:向下取整

2.3 mod:取模

2.4 rand:获取随机数

2.5 round:四舍五入

2.6 案例

三、日期函数

3.1 curdate:当前日期

3.2 curtime:当前时间

3.3 now:当前日期和时间 

3.4 YEAR , MONTH , DAY:当前年、月、日

3.5 date_add:增加指定的时间间隔

3.6 datediff:获取两个日期相差的天数

3.7 案例

四、流程函数

4.1 if

4.2 ifnull

4.3 case... when... then... else... end 

4.4 案例


 

        函数是指一段可以直接被另一段程序调用的程序或代码。也就意味着,这一段程序或代码在 MySQL 中已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。那么,函数到底在哪儿使用呢?我们先来看两个场景:

  1. 在企业的 OA 或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2022-11-12,那如何快速计算出天数呢?

  2. 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的分数值,如 98/75,如何快速判定分数的等级呢?

其实,上述的这一类的需求呢,我们通过 MySQL 中的函数都可以很方便的实现。

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

一、字符串函数

MySQL 中内置了很多字符串函数,常用的几个如下:

在 Navicat 演示如下: 

1.1 concat : 字符串拼接

SELECT CONCAT('hello','mysql');

1.2 lower : 全部转小写

SELECT LOWER('Hello');

1.3 upper : 全部转大写

SELECT UPPER('Hello');

1.4 lpad : 左填充

select lpad('01', 5, '-');

1.5 rpad : 右填充

select rpad('01', 5, '-');

1.6 trim : 去除空格

select trim(' Hello MySQL ');

1.7 substring : 截取子字符串

select substring('Hello MySQL',1,5);

1.8 案例

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

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

处理完毕后, 具体的数据为:

二、数值函数

常见的数值函数如下: 

2.1 ceil:向上取整

select ceil(1.1);
select ceil(1.9);

2.2 floor:向下取整

select floor(1.1);
select floor(1.9);

2.3 mod:取模

select mod(7,4);

2.4 rand:获取随机数

 select rand();

2.5 round:四舍五入

select round(2.344,2);

2.6 案例

通过数据库的函数,生成一个六位数的随机验证码。

思路:获取随机数可以通过 rand()函数,但是获取出来的随机数是在 0-1 之间的,所以可以在其基础思路上乘以 1000000,然后舍弃小数部分,如果长度不足 6 位,补 0。

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

三、日期函数

常见的日期函数如下: 

3.1 curdate:当前日期

select curdate();

3.2 curtime:当前时间

select curtime();

3.3 now:当前日期和时间 

select now();

3.4 YEAR , MONTH , DAY:当前年、月、日

select YEAR(now());

select MONTH(now());

select DAY(now());

3.5 date_add:增加指定的时间间隔

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

3.6 datediff:获取两个日期相差的天数

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

3.7 案例

查询所有员工的入职天数,并根据入职天数倒序排序。

思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用 datediff 函数来完成。 

select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by entrydays desc;

四、流程函数

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

4.1 if

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

4.2 ifnull

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

select ifnull('','Default');

select ifnull(null,'Default');

4.3 case... when... then... else... end 

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

select
    name,
    ( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '工作地址'
from emp;

4.4 案例

统计班级各个学员的成绩,展示的规则如下:
-- >= 85,展示优秀
-- >= 60,展示及格
-- 否则,展示不及格

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;

上一篇文章:【MySQL | 基础篇】01、SQL 语句详解_mysql 基础sql语句_Stars.Sky的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java版oj】day34收件人列表、养兔子

目录 一、收件人列表 (1)原题再现 (2)问题分析 (3)完整代码 二、养兔子 (1)原题再现 (2)问题分析 (3)完整代码 一、收件人列表 …

Python机器学习:支持向量机2

昨天是简单的了解了一下支持向量机要干什么以及线性可分支持向量机是怎么一回事,今年来看另一种:线性支持向量机: 我们昨天说的,线性可分支持向量机的目的就是找到一个超平面来吧一个数据集分成正负两个部分,但是实际…

一天学完C++的标准模板库STL

标准模板库STLstring字符串如何对string字符串的初始化(声明)?如何遍历string对象进行访问?如何对string类型的字符串进行增删改查?对string字符串增加一些字符对string字符串删除一些字符对string字符串改动一些字符在…

【hello Linux】环境变量

目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一…

数据结构的加强甜点-序列1

目录 尾递归 问题 介绍 特点 原理 答案 数组栈堆内存分配 前言 分析 再分析 所谓多维数组 程序局部性原理应用 尾递归 问题 在空间复杂度这块,有个O(n)示例如下: void recur(int n) {if (n 1) return;return recur(n - 1); } 这很明显是…

Canal(1):Canal入门

1 什么是 Canal 阿里巴巴 B2B 公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了同步杭州和美国异地机房的需求,从 2010 年开始,阿里系公司开始逐步的尝试基于数据库的日志解析&am…

SpringSecurity之微服务权限解决方案

目录 前置知识点 什么是微服务 微服务的优劣 优点 缺点 微服务本质 微服务认证与授权实现思路 认证预授权的过程 前置知识点 什么是微服务 微服务(或称微服务架构)是一种云 原 生 架构方法,在单个应用中包含众多松散耦合而且可单独部…

君子生非异也,善假于物也。【借助外力获取能量,主动改善生存环境。】

文章目录 引言I 借助外力1.1 制造很实用工具1.2 火引言 人类懂得借助外力,从被动地适应环境的进化,进入到主动改善生存环境的发展轨道上了。 人之所以为人,是因为我们善于借助外力,而不是先天有多少优势。 I 借助外力 学会制造和使用工具,提高能量获取的效率学会使用火,…

苹果手写笔有必要买吗?性价比电容笔排行榜

众所周知,苹果的正版Pencil的售价过于的高,一般的用户是买不起的。那么,市场上是否会有一款苹果Pencil的平替电容笔,而这两款电容笔在功能上是完全相同的?的确如此。国内的平替电容笔在书写方面上跟苹果Pencil差别不大…

【多线程的应用】顺序打印

【多线程的应用】顺序打印题目注意点:1. 每个线程循环10次,利用锁的wait 和 计数器count调节线程的执行顺序2. count后 lock.notifyAll 唤醒所有线程3. Thread.currentThread().getName()4. 锁中的逻辑是:进入锁中后,如果while不满…

图片怎么转换成pdf格式?这几个方法帮你一键转换

现今电子书籍越来越受到欢迎,其中PDF格式也成为了一种常用的电子书籍格式。无论是工作还是学习,我们都可能会遇到需要将图片转换成PDF格式的情况,例如保存一些资料证明、公文公告、学习资料等。在这篇文章中,我们将为大家介绍三种…

CT前瞻(一):Vant UI入门与使用

文章目录📋前言🎯什么是Vant UI🎯快速上手🎯组件用法📝最后📋前言 最近在项目开发和学习的过程中,涉及到了Vant UI(简称Vant)的使用,主要还是涉及到了Card卡…

[图神经网络]视觉图神经网络ViG(Vision GNN)--论文阅读

国际惯例: 论文地址https://arxiv.org/pdf/2206.00272.pdfgit地址https://github.com/huawei-noah/Efficient-AI-Backbones/tree/master/vig_pytorch 相较于之前将GNN和CNN结合的图像处理算法,ViG创新的将GNN直接用在了特征提取上。不再需要借用…

Docker快速搭建SkyWalking[ OAP UI[登录] Elasticsearch]

文章目录[前置]:搭建ELasticsearch相关[零]:虚拟机开放SkyingWalking和ES相关端口[一]:拉取SkyWalking-oap和SkyWalking-ui镜像[二]: 运行SkyWalking的oap和ui 容器 2.1 - 运行Skywalking-oap容器 ---- 注意oap运行参数异常 no pr…

早有尔闻 | 数字赋能,提质增效

01 卡奥斯牵头国家重点研发项目 助力中小企业数字化转型升级 3月24日,2022年国家重点研发计划“面向中小企业研发制造资源技术工业互联技术服务平台”项目正式启动。其中,卡奥斯COSMOPlat作为平台承建方牵头课题4“研发制造资源工业互联技术服务平台研…

CDH6.3.2引入debezium-connector-mysql-1.9.7监听mysql事件

1、首先说明一下为啥选用debezium,它能够根据事务的提交顺序向外推送数据,这一点非常重要。再有一个结合kafka集群能够保证高可用,对于熟悉java语言的朋友后面一篇博文会介绍怎样编写插件将事件自定义路由到你想要的主题甚至分区中。 提高按顺…

百度「文心一言」阿里「通义千问」腾讯的AI将会叫什么呢

阿里于昨天2023.4.7下午上线通义千问,与ChatGPT类似,同样是基于语言模型训练的人工智能聊天平台。通义千问的核心功能分为四个大类:撰写短文、职场助理、电影脚本和写封邮件。 通义千问通义千问https://tongyi.aliyun.com/ 首页如下&#xf…

word文件上的电子签章的法律效力如何保证?

你有没有见过这样的word文件“电子签章”? 这种用PS制作的“电子签章”,或者在一些输入公司名称就能在线生成“电子签章”的小网站、小作坊买来的“电子签章”,通通都是没有法律效力的贴图章! 使用贴图章的word文件不但没有任何…

VsCode 将源代码管理(Working tree)中的新旧代码上下对比变为左右对比

文章目录一、默认设置二、左右布局变成了上下布局三、解决方法:将上下布局改为左右布局1:找到右上角的更多设置2:点击更多设置后点击【切换到并排视图】3:效果如下(还是原来的效果)四、左右切换成上下总结一…

Pytorch实现图像风格迁移(一)

图像风格迁移是图像纹理迁移研究的进一步拓展,可以理解为针对一张风格图像和一张内容图像,通过将风格图像的风格添加到内容图像上,从而对内容图像进行进一步创作,获得具有不同风格的目标图像。基于深度学习网络的图像风格迁移主要…