[MySQL初阶]MySQL(5)内置函数详解
标题:[MySQL初阶]MySQL(5)内置函数详解
@水墨不写bug

文章目录
- 一、日期函数
- 1. current_date()
- 2. current_time()
- 3. current_timestamp()
- 4. date(datetime)
- 5. date_add(date, interval expr unit)
- 6. date_sub(date, interval expr unit)
- 7. datediff(date1, date2)
- 8. now()
- 9.日期函数总结&&注意事项
- 二、字符串函数
- 1. charset(str)
- 2. concat(string1, string2 [, ...])
- 3. instr(string, substring)
- 4. ucase(string)
- 5. lcase(string)
- 6. left(string, length)
- 7. length(string)
- 8. replace(str, search_str, replace_str)
- 9. strcmp(string1, string2)
- 10. substring(str, position [, length])
- 11. ltrim(string)
- 12.字符串函数注意事项
- 三、数学函数
- 1. `ABS(number)`
- 2. `BIN(decimal_number)`
- 3. `HEX(decimalNumber)`
- 4. `CONV(number, from_base, to_base)`
- 5. `CEILING(number)`
- 6. `FLOOR(number)`
- 7. `FORMAT(number, decimal_places)`
- 8. `RAND()`
- 9. `MOD(number, denominator)`
- 10.数学函数总结与注意事项
一、日期函数
接下来我将会按照表中罗列的函数来依次讲解MySQL内置函数。
1. current_date()
- 描述:返回当前系统日期(不包含时间)。
- 语法:
CURRENT_DATE()或CURRENT_DATE。 - 返回值:格式为
YYYY-MM-DD。 - 示例:
SELECT current_date()或者current_date; -- 返回 '2025-03-05'
2. current_time()
- 描述:返回当前系统时间(不包含日期)。
- 语法:
CURRENT_TIME()或CURRENT_TIME。 - 返回值:格式为
HH:MM:SS。 - 示例:
SELECT current_time(); -- 返回 '14:30:45'
3. current_timestamp()
- 描述:返回当前系统的日期和时间(即
时间戳)。 - 语法:
CURRENT_TIMESTAMP()或CURRENT_TIMESTAMP。 - 返回值:格式为
YYYY-MM-DD HH:MM:SS。 - 示例:
SELECT current_timestamp(); -- 返回 '2025-03-05 14:30:50'
4. date(datetime)
- 描述:从日期时间值中提取日期部分。
- 参数:
datetime(日期时间类型的值)。 - 返回值:格式为
YYYY-MM-DD。 - 示例:
SELECT date('2023-10-05 14:30:45'); -- 返回 '2023-10-05'
5. date_add(date, interval expr unit)
- 描述:在指定日期/时间上
添加一个时间间隔。 - 参数:
date:原始日期或时间。expr:数值(正数表示增加,负数表示减少)。unit:时间单位(支持YEAR、DAY、MINUTE、SECOND等)。
- 返回值:新的日期/时间。
- 示例:
SELECT date_add('2025-10-05', interval 3 day); -- 返回 '2025-10-08' SELECT date_add('14:20:45', interval 10 minute); -- 返回 '14:30:45'
6. date_sub(date, interval expr unit)
- 描述:在指定 日期/时间 上减去一个时间间隔。
- 参数:与
date_add类似。 - 返回值:新的日期/时间。
- 示例:
SELECT date_sub('2023-10-05', interval 1 year); -- 返回 '2022-10-05' SELECT date_sub('10:30:45', interval 30 second); -- 返回 '10:30:15'
7. datediff(date1, date2)
- 描述:计算两个日期之间的天数差(
date1 - date2),前 - 后。 - 参数:两个日期值(格式需为
YYYY-MM-DD)。 - 返回值:整数(正数或负数);
前 > 后 为正;前 < 后为负。 - 示例:
SELECT datediff('2023-10-10', '2023-10-05'); -- 返回 5 SELECT datediff('2023-10-01', '2023-10-15'); -- 返回 -14
8. now()
- 描述:返回当前系统的日期和时间(与
current_timestamp()功能相同)。 - 语法:
NOW()。 - 返回值:格式为
YYYY-MM-DD HH:MM:SS。 - 示例:
SELECT now(); -- 返回 '2023-10-05 14:30:45'
9.日期函数总结&&注意事项
- 单位兼容性:
date_add和date_sub的unit需与date类型匹配。例如,对日期使用MINUTE会返回NULL。 - 时间格式:若参数格式错误(如非日期字符串),函数可能返回
NULL。 - 函数别名:
current_date()等价于curdate()。now()等价于current_timestamp()。
二、字符串函数
接下来我会对上述表格函数一一详解:
1. charset(str)
- 描述:返回字符串
str的字符集名称。 - 参数:
str(字符串)。 - 返回值:字符集名称(如
utf8mb4、latin1)。 - 示例:
SELECT charset('abc'); -- 返回当前连接的字符集,一般是 'utf8mb4'
2. concat(string1, string2 [, …])
- 描述:将多个字符串连接成一个字符串。
- 参数:至少两个字符串,支持多个参数。
- 返回值:拼接后的字符串。若任一参数为
NULL,则返回NULL。 - 示例:
SELECT concat('My', 'SQL'); -- 返回 'MySQL' SELECT concat('Hello', NULL, 'World'); -- 返回 NULL
特殊注意: concat(string1, string2 [, ...])若任一参数为 NULL,则返回 NULL
3. instr(string, substring)
- 描述:返回子字符串
substring在string中首次出现的位置,如果没有出现过,则返回0。 - 参数:
string:主字符串。substring:要查找的子字符串。
- 返回值:位置索引(从
1开始),未找到返回0。 - 示例:
SELECT instr('foobarbaz', 'bar'); -- 返回 4 SELECT instr('apple', 'z'); -- 返回 0
4. ucase(string)
- 描述:将字符串转换为大写。
- 别名:
upper()。 - 示例:
SELECT ucase('Hello'); -- 返回 'HELLO'
5. lcase(string)
- 描述:将字符串转换为小写。
- 别名:
lower()。 - 示例:
SELECT lcase('HELLO'); -- 返回 'hello'
6. left(string, length)
- 描述:从字符串左侧截取指定长度的字符。
- 参数:
string:原始字符串。length:截取长度(若为负数返回空字符串)。- 示例:
SELECT left('Hello World', 5); -- 返回 'Hello'
类似的还有right(string,length),在这里不再赘述。
7. length(string)
- 描述:返回字符串的字节长度(与字符集相关)。
- 注意:若需字符数,使用
char_length()。 - 示例:
SELECT length('中国66'); -- 若字符集为 utf8mb4,返回 8(每个汉字占3字节,ASCII字符占一个字节)
SELECT char_length('中国66'); -- 返回 4(不论汉字,还是ASCII都算一个字符)
char_length()不论汉字,还是ASCII都算一个字符:

8. replace(str, search_str, replace_str)
- 描述:将
str中所有search_str替换为replace_str。 - 参数:
str:原始字符串。search_str:被替换的子字符串。replace_str:替换后的字符串。
- 示例:
SELECT replace('banana', 'a', 'o'); -- 返回 'bonono' SELECT replace('banana',,'a','中国'); -- 见图片

9. strcmp(string1, string2)
- 描述:逐字符比较两个字符串的大小(基于字符的ASCII值);
类似于C的<string.h>内的strcmp函数. - 返回值:
0:两字符串相等。1:string1>string2。-1:string1<string2。
- 示例:
SELECT strcmp('apple', 'apple'); -- 返回 0 SELECT strcmp('zoo', 'apple'); -- 返回 1
10. substring(str, position [, length])
- 描述:从
position开始截取str的字符,可指定截取长度。 - 参数:
position:起始位置(从1开始,负数表示从末尾倒数)。length:可选,截取长度。
- 示例:
SELECT substring('Hello World', 7); -- 返回 'World' SELECT substring('Hello', -3, 2); -- 返回 'lo'
11. ltrim(string)
- 描述:去除字符串的前导空格(仅左侧)。
- 注意:去除尾部空格使用
rtrim(),去除两端空格使用trim(),这两个函数与本函数类似。 - 示例:
SELECT ltrim(' Hello'); -- 返回 'Hello'
12.字符串函数注意事项
- 字符集影响:
length()返回字节长度,char_length()返回字符数。 - NULL处理:
concat()中若存在NULL,结果直接为NULL。 - 函数别名:
ucase()等价于upper()。lcase()等价于lower()。
- 索引范围:
substring()的position支持负数,表示从右向左计数。
三、数学函数

1. ABS(number)
- 描述:返回数字的绝对值。
- 参数:
number(整数或浮点数)。 - 返回值:非负数,例如
ABS(-5)返回5,ABS(-3.2)返回3.2。 - 示例:
SELECT ABS(-10); -- 输出 10
2. BIN(decimal_number)
-
描述:将十进制整数转换为二进制字符串(MySQL特有)。
-
参数:
decimal_number(十进制整数)。 -
返回值:二进制字符串,例如
BIN(10)返回'1010'(无前缀)。 -
注意:仅支持整数输入,若输入小数,则返回整数部分。仅支持正数,输入负数则返回其补码。
-
示例:
SELECT BIN(5); -- 输出 '101'示例:仅支持整数输入,若输入小数,则返回整数部分。
示例:仅支持正数,输入负数则返回其补码。
在计算机中,负数以补码形式存储。-1的补码是其绝对值(1)的二进制取反后加1。例如,对于8位整数:1的二进制:00000001
取反后:11111110
加1得到补码:11111111(即全1)。
3. HEX(decimalNumber)
- 描述:将十进制整数或字符串转换为十六进制字符串。
- 参数:
decimalNumber(整数或字符串)。 - 返回值:十六进制字符串,例如
HEX(255)返回'FF',HEX('abc')返回'616263'。 - 示例:
SELECT HEX(16); -- 输出 '10'
4. CONV(number, from_base, to_base)
- 描述:将数字从一种进制转换为另一种进制。
- 参数:
number:原始进制的数字(字符串形式,例如'A'表示十六进制的10)。from_base:原始进制(2-36)。to_base:目标进制(2-36)。
- 返回值:目标进制的字符串,例如
CONV('A', 16, 2)返回'1010'。 - 示例:
SELECT CONV(10, 10, 2); -- 输出 '1010'
5. CEILING(number)
- 描述:向上取整,返回不小于输入值的最小整数。
- 参数:
number(整数或浮点数)。 - 返回值:整数,例如
CEILING(3.2)返回4,CEILING(-2.3)返回-2。 - 别名:
CEIL()(MySQL中两者均可)。 - 示例:
SELECT CEILING(4.1); -- 输出 5
6. FLOOR(number)
- 描述:向下取整,返回不大于输入值的最大整数。
- 参数:
number(整数或浮点数)。 - 返回值:整数,例如
FLOOR(3.8)返回3,FLOOR(-2.7)返回-3。 - 示例:
SELECT FLOOR(5.9); -- 输出 5
7. FORMAT(number, decimal_places)
- 描述:格式化数字,保留指定小数位数并添加千位分隔符。
- 参数:
number:浮点数。decimal_places:保留的小数位数(整数)。
- 返回值:字符串,例如
FORMAT(1234.567, 2)返回'1,234.57'(四舍五入)。 - 注意:与
ROUND()不同,FORMAT主要用于显示格式化,结果类型为字符串。 - 示例:
SELECT FORMAT(123456.789, 1); -- 输出 '123,456.8'
8. RAND()
- 描述:生成
[0.0, 1.0)范围内的随机浮点数。 - 参数:无。
- 返回值:随机浮点数,例如
0.548813。 - 扩展用法:结合
RAND(N)可指定种子值(N为整数),生成可重复的随机序列。 - 示例:
SELECT RAND(); -- 输出 0.123456(随机值)
9. MOD(number, denominator)
- 描述:取模运算(求余数)。
- 参数:
number:被除数。denominator:除数。
- 返回值:余数,例如
MOD(10, 3)返回1,MOD(-7, 3)返回-1。 - 注意:MySQL中余数符号与被除数一致。
- 示例:
SELECT MOD(10, 3); -- 输出 1
10.数学函数总结与注意事项
-
BIN()与CONV():BIN()是 MySQL 特有函数,直接返回二进制字符串。- 若需其他进制转换,使用
CONV(number, from_base, to_base)。
-
FORMAT():- 主要用于格式化输出(添加千位分隔符),而非单纯保留小数位数。若需四舍五入,可结合
ROUND(number, decimal_places)使用。
- 主要用于格式化输出(添加千位分隔符),而非单纯保留小数位数。若需四舍五入,可结合
-
HEX():- 支持整数和字符串输入,返回十六进制字符串。
完~
转载请注明出处

相关文章:
[MySQL初阶]MySQL(5)内置函数详解
标题:[MySQL初阶]MySQL(5)内置函数详解 水墨不写bug 文章目录 一、日期函数1. current_date()2. current_time()3. current_timestamp()4. date(datetime)5. date_add(date, interval expr unit)6. date_sub(date, interval expr unit)7. dat…...
EasyDSS视频推拉流/直播点播平台:Mysql数据库接口报错502处理方法
视频推拉流/视频直播点播EasyDSS互联网直播平台支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访…...
Ruoyi+uniapp+websocket点对点和广播通知消息
前端参考文章:https://zhuanlan.zhihu.com/p/677296938 后端参考文章:ruoyi-vue websocket实现聊天功能_若依聊天系统-CSDN博客...
Linux常用命令(详细解析)
一、文件操作命令 1. ls - 列出目录内容 功能:列出指定目录中的文件和子目录。 常用选项: -l:以长格式显示文件信息,包括文件类型、权限、所有者、大小和修改日期。 -a:显示包括隐藏文件(以点开头的文件…...
Flask项目框架
文章目录 引言一、Flask基本概念定义特点 二、Flask项目结构简单项目结构中型项目结构复杂项目结构 三、Flask常用组件路由和视图函数模板引擎扩展 四、Flask特性蓝图(Blueprints)中间件异步视图 五、Flask项目示例六、总结与建议 引言 Flask是一个轻量…...
.NET 10首个预览版发布:重大改进与新特性概览!
前言 .NET 团队于2025年2月25日发布博文,宣布推出 .NET 10 首个预览版更新,重点改进.NET Runtime、SDK、Libraries 、C#、ASP.NET Core、Blazor 和.NET MAUI 等。 .NET 10介绍 .NET 10 是 .NET 9 的后继版本,将作为长期支持维护 ÿ…...
git-filter-repo 清除大文件教程
git filter-repo 是一个用于过滤和清理 Git 仓库历史的工具,它可以高效地批量修改提交历史中的文件内容、删除文件、重命名文件以及进行其他历史重构操作。相较于 git filter-branch,它通常更快且更易于使用。 以下是一个基本示例,说明如何使…...
【python】gunicorn配置
起因:因为cpu利用率低导致我去缩容,虽然缩容之后cpu利用率上升维持在60%左右,但是程序响应耗时增加了。 解释:因为cpu干这件活本身不累,但在干这件活的时候不能去干其他事情,导致并发的请求不能及时响应&am…...
基于WebAssembly的云原生运行时:重新定义轻量化微服务架构
引言:颠覆性的运行时革命 Fastly边缘计算平台每天处理2000亿次Wasm请求,冷启动时间低于1ms。字节跳动采用Wasm实现广告算法热更新,发布耗时从分钟级降至秒级。CNCF 2024调研显示Wasm在边缘计算场景渗透率达42%,单实例内存开销仅为…...
25年社工考试报名时间⏰附报名全流程✅
目前,湖北、重庆、云南、天津、山西、内蒙、四川、北京八地已发布考务通知。 1、湖北:3月11日9:00—3月26日20:00 2、重庆:3月13日9:00—3月24日17:00 3️⃣云南:3月10日09:00—3月20日17:00 4、天津:3月10日0:00至…...
鸿蒙全栈开发 D2
课程目标 掌握ArkTS基础语法与核心概念理解声明式UI开发范式能独立开发简单鸿蒙应用组件建立规范的代码编写习惯 第一部分:初识ArkTS 1.1 语言全景认知 #mermaid-svg-V5mnjQN3DAHkfoBo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size…...
下载PyCharm 2024.3.4 (Community Edition)来开发测试python
1、下载PyCharm 2024.3.4 (Community Edition) 如果你使用的是联想电脑,可以直接在联想应用商店里下载,这样比较省事。 如果你使用的不是联想电脑,当然也可能是别的应用商店里下载。 也可以直接在官网下载: 下载 PyCharm&…...
C#调用Ni板卡进行实现采集任务(模拟量输入输出)示例2
C#调用Ni板卡进行实现采集任务(模拟量输入输出)示例2 本文介绍如何使用C#控制Ni的USB-6008板卡进行模拟量输入、模拟量输出、输出量输入、数字量输出。本例通过新建一个类USB_6008的类进行功能封装:即把模拟量的读取以及模拟量的输出进行了封装。代码详见: https://download…...
01-二分-查找(洛谷)
链接: P2249 【深基13.例1】查找 - 洛谷 题目 思路 没啥好说的,就是二分的模板要熟练掌握;详细参考代码随想录 本道题要注意的就是不能直接套模板,因为有重复元素,所以要单独处理一下边界。 代码 #include<bi…...
linux发送邮件结合cron
Linux发送邮件结合cron定时任务 配置邮件发送(以QQ邮箱为例,其他同理) 一、获取qq邮箱授权码 登录qq邮箱 进行手机验证或者令牌啥的会获取到一个授权码 二、使用mailx发邮件 安装软件 yum -y install mailx编辑配置文件 vim /etc/mail…...
C语言基础2
一、变量的作用域 局部变量的作用域是变量所在的局部范围,全局变量的作用域是整个工程。 int main() { { int a 10; printf("a %d\n", a); } printf("a %d\n", a); //报错位置 return 0; } 这里会发生报错: “a”: 未声明的…...
Linux系统上安装kafka
目录 1. 安装Java环境 2. 下载和解压Kafka 3. 配置Kafka 4. 启动ZooKeeper和Kafka 5. 测试Kafka 6. 停止服务 7.常见问题 1. 安装Java环境 Kafka依赖Java运行环境(JDK 8或更高版本): # 安装OpenJDK(推荐) yum…...
09 HarmonyOS NEXT 仿uv-ui Tag组件开发教程系列(三)
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! 文章目录 Tag组件实战应用与最佳实践1. 复杂场景应用1.1 标签筛选系统 2. 性能优化实践2.1 状态管理优化2.2 渲染性能优化 3. 实用功能扩展3.1 拖拽…...
【每日学点HarmonyOS Next知识】网页Scheme拉起应用、列表刷新、Web下载文件、根据子元素
1、HarmonyOS 目前 app 中是否支持网页Scheme拉起应用? 支持deeplink的,网页中添加按钮引导用户拉起应用。网页端直接提示打开应用按钮绑定点击事件window.open(tzptest://www.xxxxx.com?urlXXX)>,点击该按钮,打开网页web端收到的url为t…...
如何排查MySQL是否走索引
博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...
AF3 curry1函数解读
AlphaFold3 data_transforms 模块的 curry1 函数实现了一个经典的柯里化 (currying) 技术,具体是固定函数 f 的所有参数,除了第一个参数。换句话说,curry1 允许你在调用函数时,先提供除了第一个参数之外的所有参数,然后返回一个新的函数,这个新函数只等待第一个参数。 …...
摄像头应用编程(三):多平面视频采集
文章目录 1、前言2、环境介绍3、步骤4、应用程序编写5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 在查看摄像头类型时,大致可以分为两类:Video Capture 和 Video Capture Multiplanar。 本次应用程序主要针对类型为Video Capture Multi…...
【GoTeams】-2:项目基础搭建(下)
本文目录 1. 回顾2. Zap日志3. 配置4. 引入gprc梳理gRPC思路优雅关闭gRPC 1. 回顾 上篇文章我们进行了路由搭建,引入了redis,现在来看看对应的效果。 首先先把前端跑起来,然后点击注册获取验证码。 再看看控制台输出和redis是否已经有记录&…...
02-双指针-A-B 数对
题目 链接:P1102 A-B 数对 - 洛谷 思路 问题场景想象 我们可以把这个问题想象成在一个排队的队伍里找符合特定身高差的人对。给定的数列里的每个数就好比队伍里每个人的身高,而差值 C 就是我们要找的身高差。我们的目标是找出队伍里所有身高差恰好是 …...
2025年Cursor最新安装使用教程
Cursor安装教程 一、Cursor下载二、Cursor安装三、Cursor编辑器快捷键(1) 基础编辑快捷键(2) 导航快捷键(3) 其他常用快捷键 一、Cursor下载 Cursor官方网站(https://www.cursor.com/ ) 根据自己电脑操作系统选择对应安装包 二、Cursor安装 下载完成后…...
Modbus TCP/IP 与 RS-485 接口的兼容性
Modbus TCP/IP 和 RS-485 接口的 直接兼容性 不存在,因为两者分属不同的网络层次(TCP/IP 基于以太网,RS-485 是物理层接口),但通过 协议转换和网络架构设计 可以实现互联互通。以下是详细的技术解析与实现方案: 一、协议差异对比 特性Modbus TCP/IPModbus RTU(RS-485)物…...
快速部署:在虚拟机上安装 CentOS 7 的详细步骤
CentOS是一个开源的基于Red Hat Enterprise Linux (RHEL) 的Linux发行版,它的主要目的是提供一个与RHEL相似的操作系统但不包含RHEL的商业支持和服务,完全免费。主要面向那些希望在企业环境中使用稳定、可靠的Linux系统但又不想支付RHEL许可证费用的用户…...
better-sqlite3之exec方法
在 better-sqlite3 中,.exec() 方法用于执行包含多个 SQL 语句的字符串。与预编译语句相比,这种方法性能较差且安全性较低,但有时它是必要的,特别是当你需要从外部文件(如 SQL 脚本)中执行多个 SQL 语句时。…...
NDT 代价函数
SLAM 中的 NDT 代价函数 在SLAM(同步定位与地图构建)中,NDT(Normal Distributions Transform)是一种常用的点云配准方法。NDT代价函数用于评估点云配准的质量。以下是NDT代价函数的详细介绍: NDT 代价函数…...
【有啥问啥】深入浅出:大模型应用工具 Ollama 技术详解
深入浅出:大模型应用工具 Ollama 技术详解 引言 近年来,大型模型(Large Models,LLMs)技术突飞猛进,在自然语言处理、计算机视觉、语音识别等领域展现出强大的能力。然而,部署和运行这些庞大的…...
