MySQL(四)——常用函数
文章目录
- 函数
- 字符串函数
- 数值函数
- 日期函数
- 流程函数
函数
函数,是指一段可以直接被另一段程序调用的程序或代码。
MySQL中内置了许多函数,我们只需在合适的场景下调用它们即可,调用函数查询结果直接使用SELECT即可,并且可以嵌套使用:
SELECT functions(parameters);
- functions:函数
- parameters:参数
为了避免多张截图堆叠的问题,我们在直接演示环节使用代码块并使用注释来展示函数结果。
字符串函数
常用字符串函数:
| 函数 | 功能 |
|---|---|
| CONCAT(S1, S2, …Sn) | 字符串拼接,将S1,S2,… Sn拼接成一个字符串 |
| LOWER(str) | 将字符串 str 全部转为小写 |
| UPPER(str) | 将字符串 str 全部转为大写 |
| LPAD(str, len, pad) | 左填充,用字符串 pad 对 str 的左边进行填充,达到 len 个字符串长度 |
| RPAD(str, len, pad) | 右填充,用字符串 pad 对 str 的右边进行填充,达到 len 个字符串长度 |
| TRIM(str) | 去掉字符串头部和尾部的空格 |
| SUBSTRING(str, start, len) | 返回字符串 str 从 start 位置起的 len 个长度的字符串,第一个字符的位置是1 |
- 对于字符串函数,MySQL能够自动处理非字符串类型的参数,并将它们转换为字符串后再进行指定操作
直接演示:
SELECT CONCAT('Hello', ' MySQL!');
SELECT CONCAT(123, 12.5);
/*
结果1:Hello MySQL!
结果2:12312.5
*/SELECT LOWER('Hello MySQL!');
SELECT LOWER(123);
/*
结果1:hello mysql!
结果2:123
*/SELECT UPPER('Hello MySQL!');
SELECT UPPER(12.3);
/*
结果1:HELLO MYSQL!
结果2:12.3
*/SELECT LPAD(1, 5, 0);
SELECT LPAD('ok', 3, 'o');
/*
结果1:00001
结果2:ook
*/SELECT RPAD(1, 5, 0);
SELECT RPAD('ok', 3, 'o');
/*
结果1:10000
结果2:oko
*/SELECT TRIM(' i am fine. ');
/*
结果:i am fine.
*/SELECT SUBSTRING('Hello MySQL!', 1, 5);
SELECT SUBSTRING(123456, 2, 4);
/*
结果1:Hello
结果2:2345
*/
场景演示:
对于下表,修改id数据列的格式:3位数,不够的左边填充0:


数值函数
常用数值函数:
| 函数 | 功能 |
|---|---|
| CEIL(x) | 向上取整 |
| FLOOR(x) | 向下取整 |
| MOD(x, y) | 返回 x/y 的模 |
| RAND() | 返回 0~1 内的随机数 |
| ROUND(x, y) | 求参数 x 的四舍五入的值,保留 y 位小数 |
直接演示:
SELECT CEIL(1.1);
# 结果:2SELECT FLOOR(1.9);
# 结果:1SELECT MOD(5, 11);
# 结果:5SELECT RAND();
# 结果:0~1的随机数,例如,某次执行的结果为0.9047801484398359SELECT ROUND(12.55, 1);
# 结果:12.6
场景演示:
查询所有人的成绩,要求查询结果中成绩没有小数位,四舍五入:

日期函数
常用日期函数:
| 函数 | 功能 |
|---|---|
| CURDATE() | 返回当前日期 YYYY-MM-DD |
| CURTIME() | 返回当前时间 HH:MM:SS |
| NOW() | 返回当前日期和时间 YYYY-MM-DD HH:MM:SS |
| YEAR(date) | 获取指定 date 的年份 |
| MONTH(date) | 获取指定 date 的月份 |
| DAY(date) | 获取指定 date 的日期 |
| DATE_ADD(date, INTERVAL expr type) | 返回一个日期/时间值加上一个时间间隔 expr 后的时间值 |
| DATEDIFF(date1, date2) | 返回起始时间 date1 和结束时间 date2 之间间隔的天数 |
DATE_ADD(date, INTERVAL expr type)的参数含义如下:- date:这是你想要添加时间间隔的原始日期。 它可以是一个日期或日期时间表达式,比如一个
DATE、DATETIME或TIMESTAMP类型的列,或者是一个日期字符串(在能够被MySQL解析为有效日期的情况下)。 - INTERVAL:这是一个关键字,用于指示接下来的参数是一个时间间隔。 它告诉MySQL你想要对前面的日期进行加法操作,并且接下来的参数将定义这个加法操作的具体内容。
- expr:这是你想要添加到原始日期上的时间间隔的数量。 它应该是一个整数或整数表达式。例如,如果你想要添加3天,那么
expr就是3。 - type:这是时间间隔的单位。 它告诉MySQL你想要以什么单位来添加时间间隔。
type可以是多种不同的值,比如DAY、MONTH、YEAR、HOUR、MINUTE、SECOND等。这个参数决定了expr的具体含义。例如,如果type是DAY,那么expr就是天数;如果type是MONTH,那么expr就是月数。
- date:这是你想要添加时间间隔的原始日期。 它可以是一个日期或日期时间表达式,比如一个
直接演示:
SELECT CURDATE(); -- 输出当前日期,本次运行时日期为2024-08-18SELECT CURTIME(); -- 输出当前时间,本次运行时时间为20:49:44SELECT NOW(); -- 输出当前日期和时间,本次运行时为2024-08-18 20:50:17SELECT YEAR('2023-04-01'); -- 输出: 2023
SELECT YEAR('20230401'); -- 输出: 2023(注意:这取决于MySQL的SQL模式,有时需要确保字符串能被正确解析为日期)
SELECT YEAR(CURDATE()); -- 输出当前日期的年份 本次运行为2024
SELECT YEAR(NOW()); -- 输出当前日期和时间的年份(仅提取年份部分),本次运行为2024SELECT MONTH('2023-04-01'); -- 输出: 4
SELECT MONTH('20230401'); -- 输出: 4(注意:这取决于MySQL的SQL模式,有时需要确保字符串能被正确解析为日期)
SELECT MONTH(CURDATE()); -- 输出当前日期的月份 本次运行为8
SELECT MONTH(NOW()); -- 输出当前日期和时间的月份(仅提取年份部分),本次运行为8SELECT DAY('2023-04-01'); -- 输出: 1
SELECT DAY('20230401'); -- 输出: 1(注意:这取决于MySQL的SQL模式,有时需要确保字符串能被正确解析为日期)
SELECT DAY(CURDATE()); -- 输出当前日期的'日期' 本次运行为18
SELECT DAY(NOW()); -- 输出当前日期和时间的'日期'(仅提取年份部分),本次运行为18SELECT DATE_ADD('2021-11-10', INTERVAL 5 DAY); -- 结果为:2021-11-15
SELECT DATE_ADD('2021-11-10', INTERVAL 5 MONTH); -- 结果为:2022-04-10
SELECT DATE_ADD(NOW(), INTERVAL 5 YEAR); -- 此次结果为:2029-08-18 21:03:18SELECT DATEDIFF('2011-03-30', '2010-01-12'); -- 结果为:442
SELECT DATEDIFF('2011-03-30', '2012-01-12'); -- 结果为:-288(所以实际上是左参数‘减去’右参数,早 - 晚 = 负数)
场景演示:
比如有张学生信息表,其中有个入学时间的字段,我们想查询学生的入学了多长时间,并按照时间降序排序,就会写出类似如下语句:
SELECT name, DATEDIFF(NOW(), en_time) 时间 FROM student ORDER BY 时间 DESC;
流程函数
常用流程函数:
| 函数 | 功能 |
|---|---|
| IF(value, t, f) | 如果 value 为 true,返回 t,否则返回 f |
| IFNULL(value1, value2) | 如果 value 不为空,返回 value1,否则返回 value2 |
| CASE WHEN [val1] THEN [ret1]… ELSE [default] END | 如果 val1 为 true,返回 ret1,… 否则返回 default |
| CASE [expr] WHEN [val1] THEN [ret1]… ELSE [default] END | 如果 expr 的值等于 val1,返回 ret1,… 否则返回 default |
- 在SQL的
CASE语句中,条件是从上到下依次评估的,一旦找到满足条件的分支,就会执行该分支的语句并结束CASE表达式的评估。
直接演示:
SELECT IF(20 > 11, 'OK', 'NO'); -- 结果为:OK
SELECT IF(20 < 11, 20, 11); -- 结果为:11SELECT IFNULL(NULL, 12); -- 结果为:12
SELECT IFNULL(10, 12); -- 结果为:10SELECT CASE WHEN 66 > 90 THEN 'one' WHEN 66 > 80 THEN 'two' ELSE 'default' END; -- 结果为:default
SELECT CASE WHEN 66 > 60 THEN 'one' WHEN 66 > 50 THEN 'two' ELSE 'default' END; -- 结果为:oneSELECT CASE 43 WHEN 20 THEN 1 WHEN 43 THEN 2 ELSE 3 END; -- 结果为:2
SELECT CASE 'mysql' WHEN 'nosql' THEN 1 WHEN 43 THEN 2 ELSE 3 END; -- 结果为:3
场景演示:
查询学生成绩,要求:1. >= 90 显示优秀 2. >= 60 显示及格 3. 否则,显示不及格,如下:

完
相关文章:
MySQL(四)——常用函数
文章目录 函数字符串函数数值函数日期函数流程函数 函数 函数,是指一段可以直接被另一段程序调用的程序或代码。 MySQL中内置了许多函数,我们只需在合适的场景下调用它们即可,调用函数查询结果直接使用SELECT即可,并且可以嵌套使…...
C++ //练习 17.38 扩展上一题中你的程序,将读入的每个单词打印到它所在的行。
C Primer(第5版) 练习 17.38 练习 17.38 扩展上一题中你的程序,将读入的每个单词打印到它所在的行。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 #include<iostream> #include<…...
NC 丑数
系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 把只包含质因…...
Spring Boot 整合 Spring AI 实现项目接入ChatGPT(OpenAl的调用)
当前各种AI项目层出不穷,但绝大多数都是用python写的,现在Spring开源了Spring AI项目,让Java开发者也可以轻松给自己的springboot项目集成AI能力。目前spring AI正式版本为0.8.1,支持接入openAI、Ollama、Azure openAI、Huggingfa…...
react中 useContext 和useReducer的使用
在React中,useContext 和 useReducer 是两个非常有用的Hooks,它们分别用于管理跨组件的状态和复杂的状态逻辑。下面将分别介绍这两个Hooks的使用方式及其结合使用的场景。 1. useContext useContext 允许你订阅React的Context变化。Context提供了一种在…...
Android:动态更新app启动图标和应用名
一、需求背景 每逢重要佳节,很多应用启动图标会自动更新为对应佳节的图标,应用无需更新。 二、效果图 更新后的启动图标和应用名称 三、实现流程 Android app只能替换内置的icon,因此需要提前将logo图标放入App资源文件件里 实际项目App更新…...
深入探讨 ElementUI 动态渲染 el-table
在前端开发中,表格是不可或缺的一部分。无论是数据展示、数据录入,还是数据分析,表格都扮演着重要的角色。而在 Vue.js 生态系统中,ElementUI 提供了一个强大且灵活的表格组件——el-table。本文将带你深入了解如何使用 ElementUI…...
数据炼金术:用Python爬虫精炼信息
标题:数据炼金术:用Python爬虫精炼信息 在数据泛滥的互联网时代,Python爬虫不仅是搜集信息的利器,更是清洗和格式化数据的炼金术。本文将带你走进数据清洗和格式化的世界,展示如何使用Python爬虫从海量网络信息中提取…...
C++第三十八弹---一万六千字使用红黑树封装set和map
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、set/map基本结构 2、红黑树基本结构改造 3、红黑树的迭代器 4、set的模拟实现 5、map的模拟实现 6、完整代码 1、set/map基本结构 在封装…...
★ C++基础篇 ★ vector 类
Ciallo~(∠・ω< )⌒☆ ~ 今天,我将继续和大家一起学习C基础篇第六章----vector类 ~ 目录 一 vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vecto…...
原生js用Export2Excel导出excel单级表头和多级表头数据方式实现
原生js用Export2Excel导出excel单级表头和多级表头数据方式实现 原生js用Export2Excel导出excel单级表头和多级表头数据方式实现HTML文件导入需要的文件HTML文件中实现导出函数HTML总代码实现汇总(直接复制代码,注意js引入路径) 原生js用Expo…...
急需翻译PDF文件怎么办?pdf翻译在线快速帮你解决
面对满屏幕密密麻麻的pdf文件,我常常感到头疼! 语言障碍让我在获取信息的道路上踌躇不前,但自从我发现了pdf在线翻译成中文的神奇工具,一切问题似乎都迎刃而解。 这些软件不仅让我能够快速跨过语言壁垒,还让我在学术…...
线程安全的集合类和并发数据结构
在Java中,线程安全的集合类和并发数据结构对于处理多线程环境下的数据共享和同步至关重要。这些集合和数据结构通过不同的机制来确保在多线程环境下数据的一致性和完整性。以下是一些常见的线程安全的集合类和并发数据结构: 线程安全的集合类 Vector 描…...
Linux环境下运行介绍
1. 文件编程函数介绍 如果在Linux系统下学习C语言,就会了解到两套文件编程接口函数: C语言标准的文件编程函数: fopen、fread、fwrite、fclose Linux下提供的文件编程函数: open、read、write、close 传参的区别: 基于文件指针: fopen fclose fread…...
Adobe Media Encoder ME 2023-23.6.6.2 解锁版下载安装教程 (专业的视频和音频编码渲染工具)
前言 Adobe Media Encoder(简称Me)是一款专业的音视频格式转码软件,文件格式转换软件。主要用来对音频和视频文件进行编码转换,支持格式非常多,使用系统预设设置,能更好的导出与相关设备兼容的文件。 一、…...
在go语言里io.EOF怎么理解呢?
Go语言在处理文件和其他I/O流时,会使用io.EOF常量来表示文件结束(End Of File)的情况。 io.EOF是Go标准库中io包定义的一个错误值,用于在读取操作达到文件末尾时返回。它是处理文件读取和I/O操作时常见的错误类型之一。当读取操作…...
日常编码工作与提升式学习两不误
在快速迭代的编程世界中,程序员们不仅需要高效完成日常编码任务,还需不断学习新技术、深化专业知识,以应对日益复杂的项目挑战。然而,如何在繁忙琐碎的编码工作与个人成长之间找到平衡,是不少程序员都面临的一个难题。…...
推荐被Stars5.8k的Java框架RuoYi
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,…...
聊聊适配器模式
目录 适配器模式概念 主要实现方式 主要组成 UML用例图 代码示例 生活场景 应用场景 适配器模式概念 适配器模式属于结构型设计模式,它的主要目的是将一个类的接口转换成客户端所期望的另一种接口形式,使得原本接口不兼容的类可以一起工作。 主…...
韩国服务器的性能如何提升
韩国服务器的性能可以通过硬件升级、网络优化、缓存优化和软件优化来提升。具体方法如下,rak小编为您整理发布韩国服务器的性能如何提升。 1. 硬件升级 CPU升级:选择高性能的多核处理器,可以显著提升计算速度和响应能力。 内存升级࿱…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...
【QT控件】显示类控件
目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏:QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...
篇章一 论坛系统——前置知识
目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...
