当前位置: 首页 > news >正文

【MySQL系列】 第三章 · 函数

写在前面


        Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误不足之处,请多多指正!谢谢大家!!!

        如果小哥哥小姐姐们对我的文章感兴趣,请不要吝啬你们的小手,多多点赞加关注呀!❤❤❤ 爱你们!!!


目录

写在前面

1. 函数简介

 2. 字符串函数

3. 数值函数

4. 日期函数

5. 流程函数

结语


【往期回顾】

【MySQL系列】 第一章 · MySQL概述

【MySQL系列】第二章 · SQL(上)

【MySQL系列】 第二章 · SQL(中)

【MySQL系列】 第二章 · SQL(下)


【其他系列】

【HTML5系列】

【HTML4系列】

【CSS2系列】

【CSS3系列】

【Java基础系列】


1. 函数简介


  • 函数是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在MySQL已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。 那么,函数到底在哪儿使用呢?
  • 我们先来看两个场景:
  • 在企业的OA或其他的人力系统中,经常会提供的有这样一个功能,每一个员工登录上来之后都能够看到当前员工入职的天数。 而在数据库中,存储的都是入职日期,如 2000-11-12,那如果快速计算出天数呢?
  • 在做报表这类的业务需求中,我们要展示出学员的分数等级分布。而在数据库中,存储的是学生的分数值,如98/75,如何快速判定分数的等级呢?
  • 其实,上述的这一类的需求呢,我们通过MySQL中的函数都可以很方便的实现 。
  • MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。

 2. 字符串函数


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

演示如下:

A. concat : 字符串拼接
select concat('Hello' , ' MySQL');
B. lower : 全部转小写
select lower('Hello');
C. upper : 全部转大写
select upper('Hello');
D. lpad : 左填充
select lpad('01', 5, '-');
E. rpad : 右填充
select rpad('01', 5, '-');
F. trim : 去除空格
select trim(' Hello MySQL ');
G. substring : 截取子字符串
select substring('Hello MySQL',1,5);
案例 :
  • 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001
update emp set workno = lpad(workno, 5, '0');
  • 处理完毕后, 具体的数据为:

3. 数值函数


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


4. 日期函数


  • 常见的日期函数如下:
演示如下:
A. curdate :当前日期
select curdate();
B. curtime :当前时间
select curtime();
C. now :当前日期和时间
select now();
D. YEAR , MONTH , DAY :当前年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());
E. date_add :增加指定的时间间隔
select date_add(now(), INTERVAL 70 YEAR );
F. datediff :获取两个日期相差的天数
select datediff('2021-10-01', '2021-12-01');
案例:
  • 查询所有员工的入职天数,并根据入职天数倒序排序。
  • 思路: 入职天数,就是通过当前日期 - 入职日期,所以需要使用datediff函数来完成。
select name, datediff(curdate(), entrydate) as 'entrydays' from emp order by
entrydays desc;

5. 流程函数


  • 流程函数也是很常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。
演示如下:
A. if
select if(false, 'Ok', 'Error');
B. ifnull
select ifnull('Ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');
C. case when then else end
需求 : 查询 emp 表的员工姓名和工作地址 ( 北京 / 上海 ----> 一线城市 , 其他 ----> 二线城市 )
selectname,( 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;

MySQL的常见函数我们学习完了,那接下来,我们就来分析一下,在前面讲到的两个函数的案例场景,思考一下需要用到什么样的函数来实现?

  • 数据库中,存储的是入职日期,如 2000-01-01,如何快速计算出入职天数呢?
    • 答案: datediff
  • 数据库中,存储的是学生的分数值,如9875,如何快速判定分数的等级呢?
    • 答案: case ... when ...

结语


本人会持续更新文章的哦!希望大家一键三连,你们的鼓励就是作者不断更新的动力

相关文章:

【MySQL系列】 第三章 · 函数

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…...

微信小程序wxss定位/选择/查找元素的几种方式

wxss定位、选择、查找元素的几种方式与css类似,下面介绍常用的几种: 选择器样例样例描述.class.intro选择所有拥有 class"intro" 的组件#id#firstname选择拥有 id"firstname" 的组件elementview选择所有 view 组件element, element…...

Canvas—从入门到案例实现

文章目录 Canvas—从入门到案例实现一、设置canvas环境1.1 <canvas>元素1.2 渲染上下文context 二、形状与路径的绘制2.1 形状绘制2.2 路径绘制2.3 绘制一个笑脸 三、使用样式和颜色四、绘制文本五、使用图像5.1 图片源5.2 获取页面内的图片5.3 缩放Scaling5.4 切片Slici…...

飞书开发学习笔记(六)-网页应用免登

飞书开发学习笔记(六)-网页应用免登 一.上一例的问题修正 在上一例中&#xff0c;飞书登录查看网页的界面显示是有误的&#xff0c;看了代码&#xff0c;理论上登录成功之后&#xff0c;应该显示用户名等信息。 最后的res.nickName是用户名&#xff0c;res.i18nName.en_us是英…...

【ROS】Nav2源码下载、编译、运行

【ROS】郭老二博文之:ROS目录 1、源码下载 1.1 源码地址 https://github.com/ros-planning/navigation2 1.2 创建工程目录 ROS2使用目录结果来管理项目,因此在下载前需要创建好目录结构: mkdir -p ~/git/nav2/src1.3 下载 git中默认版本是main。本人的开发环境为Ubun…...

微信小程序 30分钟倒计时功能

ps:凑个数 getTimeDiff(date) {let _this = this;let curTime = new Date(date)_this.countDown(_this.timeFormatConvert(new Date(curTime.setMinutes(curTime.getMinutes() + 30))))},timeFormatConvert(e) {const Y = e.getFullYear(); // 年const M = this.prefixZero(e.…...

JAVA判断指定日期是否在指定的时间段内

参考文献: Java语言判断当前时间在时间范围内_java判断时间区间-CSDN博客 package com.itheima.method2;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;public class DateTest {public static voi…...

关于晋升与跳槽的一些思考

内部晋升 内部晋升是我优先考虑的&#xff0c;原因有很多。首先这是一个新业务&#xff0c;相对而言容易拿到结果。其次我想体验不同的晋升路径&#xff0c;内部晋升答辩&#xff0c;是挑战也是一次成长的机会&#xff0c;是一次他人帮助自己review的机会。作为从校园出来的校…...

url找不到404的问题,url被拼接

今天遇到一个测试feign调用的功能&#xff0c;如图所示 先说结论 Controller换成RestController 将日志设置为debug模式 被DispatcherServlet FORWARD了 找到路径 对属性设置断点&#xff0c;看下是哪注进来的 我们再去找encodedPath 此处是undertow的源码&#xff0c;但是und…...

如何解决golang开发中遇到的报错:checksum mismatch downloaded

问题描述 如题&#xff0c;项目开发中遇到如下报错&#xff08;你的报错信息可能与我的有一点区别&#xff0c;如verifying的包名&#xff0c;但是问题本质都是一样的&#xff09;&#xff1a; verifying github.com/algorand/go-codec/codecv1.1.8/go.mod: checksum mismatc…...

4.以docker容器生成镜像推送到阿里云镜像仓库

1.开通阿里云镜像仓库 1.1 登录阿里云&#xff0c;访问容器镜像服务。地址如下&#xff1a; https://cr.console.aliyun.com/cn-shanghai/instances 1.2 个人学习为例&#xff0c;创建个人版实例 1.2.1 点击个人实例 1.2.2 .创建个人实例 1.2.3 创建完成后&#xff0c;设置…...

CSS Form表单布局

效果图 <Tab IsCard"true"><TabItem Text"表单信息-DIV版本"><div class"row"><div class"col"><label for"field1">工程名称:</label><input class"form-control" type&…...

c++ shared_mutex 读写锁使用详解

c 读写锁使用详解 std::shared_mutex c17 头文件 #include <shared_mutex>。用于实现共享和独占访问的互斥锁。提供了一种更加灵活的机制&#xff0c;允许多个线程在共享模式下读取数据&#xff0c;但只允许单个线程在独占模式下写入或修改数据。与 std::mutex 相比&am…...

淘宝商品详情接口,淘宝详情页接口,宝贝详情页接口,商品属性接口,商品信息查询,商品详细信息接口,h5详情,淘宝API接口演示案例

淘宝详情接口API可以帮助简化运营流程&#xff0c;更加专注于产品本身。通过调用API&#xff0c;可以快速获取到商品的标题、图片、价格等信息&#xff0c;省去了手动编写和编辑的繁琐过程。这样就可以更快地上架新品、更新商品信息&#xff0c;提高运营的效率。 taobao.item_…...

python爬取网站数据,作为后端数据

一. 内容简介 python爬取网站数据&#xff0c;作为后端数据 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接&#xff1a; 三.主要流程 3.1 通过urllib请求网站 里面用的所有的包 ! pip install lxml ! pip install selenium ! pip install…...

【机器学习】K近邻算法:原理、实例应用(红酒分类预测)

案例简介&#xff1a;有178个红酒样本&#xff0c;每一款红酒含有13项特征参数&#xff0c;如镁、脯氨酸含量&#xff0c;红酒根据这些特征参数被分成3类。要求是任意输入一组红酒的特征参数&#xff0c;模型需预测出该红酒属于哪一类。 1. K近邻算法介绍 1.1 算法原理 原理&a…...

基于安卓android微信小程序的快递取件及上门服务系统

项目介绍 本文从管理员、用户的功能要求出发&#xff0c;快递取件及上门服务中的功能模块主要是实现管理员服务端&#xff1b;首页、个人中心、用户管理、快递下单管理、预约管理、管理员管理、系统管理、订单管理&#xff0c;用户客户端&#xff1b;首页、快递下单、预约管理…...

leetCode 92.反转链表 II + 图解

92. 反转链表 II - 力扣&#xff08;LeetCode&#xff09; 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 206. 反转链表 - 力扣&#xff08;LeetCode&am…...

【MongoDB】索引 – 通配符索引

一、准备工作 这里准备一些数据 db.books.drop();db.books.insert({_id: 1, name: "Java", alias: "java 入门", description: "入门图书" }); db.books.insert({_id: 2, name: "C", alias: "c", description: "C 入…...

python安装pip install报错Could not fetch URL https://pypi.org/simple/pip/...更换镜像源

更换镜像源 一. 现象pycharm使用 pip install xxx安装包时&#xff0c;一直报错&#xff1a; 二. 原因&#xff1a;三. 解决办法&#xff1a;一. 临时使用二. 永久更改三. 永久更改1. Windowswindows环境下Windows&#xff08;示例win10&#xff09; 2. Linux or Mac3. Pycharm…...

C++ 算数运算符 学习资料

C 算数运算符 在 C 中&#xff0c;算数运算符用于执行各种数学运算。以下是常用的算数运算符&#xff1a; &#xff1a;加法运算符&#xff0c;用于将两个表达式相加。-&#xff1a;减法运算符&#xff0c;用于从一个表达式中减去另一个表达式。*&#xff1a;乘法运算符&…...

问题 H: 棋盘游戏(二分图变式)

题意&#xff1a;要求找到 不放车就无法达到最大数的点 的个数 题解&#xff1a;1.以行列绘制二分图 2.先算出最大二分匹配数 3.依次遍历所有边 删除该边&#xff0c;并计算二分匹配最大值 &#xff08;若小于原最大值即为重要点&#xff09;&#xff0…...

SQL 主从数据库实时备份

在SQL数据库中&#xff0c;主从复制&#xff08;Master-Slave Replication&#xff09;是一种常见的实时备份和高可用性解决方案。这种配置允许将一个数据库服务器&#xff08;主服务器&#xff09;的更改同步到一个或多个其他数据库服务器&#xff08;从服务器&#xff09;&am…...

C/C++:在#define中使用参数

文章目录 在#define中使用参数参考资料 在#define中使用参数 在#define中使用参数可以创建外形和作用与函数类似的类函数宏。带有 参数的宏看上去很像函数&#xff0c;因为这样的宏也使用圆括号。类函数宏定义的圆 括号中可以有一个或多个参数&#xff0c;随后这些参数出现在替…...

Hive 查询优化

Hive 查询优化 -- 本地 set mapreduce.framework.namelocal; set hive.exec.mode.local.autotrue; set mapperd.job.trackerlocal; -- yarn set mapreduce.framework.nameyarn; set hive.exec.mode.local.autofalse; set mapperd.job.trackeryarn-- 向量模式 set hive.vectori…...

【Java 进阶篇】JQuery 案例:优雅的隔行换色

在前端的设计中&#xff0c;页面的美观性是至关重要的。而其中一个简单而实用的设计技巧就是隔行换色。通过巧妙地使用 JQuery&#xff0c;我们可以轻松地实现这一效果&#xff0c;为网页增添一份优雅。本篇博客将详细解析 JQuery 隔行换色的实现原理和应用场景&#xff0c;让我…...

Redis 常用的类型和 API

前言 在当今的软件开发中&#xff0c;数据存储与操作是至关重要的一部分。为了满足日益增长的数据需求和对性能的追求&#xff0c;出现了许多不同类型的数据库。其中&#xff0c;Redis 作为一种基于内存且高性能的键值存储数据库&#xff0c;因其快速的读取速度、丰富的数据结…...

在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢?

文章目录 前言不过,时过境迁,QVTKOpenGLWidget用的越来越少,官方推荐使用qvtkopengnativewidget代替QVTKOpenGLWidget 前言 在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,我们要使用QVTKOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢? 不过,时过境迁,Q…...

力扣每日一道系列 --- LeetCode 138. 随机链表的复制

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 LeetCode 138. 随机链表的复制 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加…...

无人零售:创新优势与广阔前景

无人零售&#xff1a;创新优势与广阔前景 无人零售在创新方面具有优势。相比发展较为成熟的欧洲和日本的自动贩卖机市场&#xff0c;中国的无人零售市场人均占有量较少&#xff0c;这表明该市场具有广阔的前景和巨大的市场潜力。 此外&#xff0c;无人零售涉及到许多相关行业&…...