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升级:选择高性能的多核处理器,可以显著提升计算速度和响应能力。 内存升级࿱…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
