MySQL数据库中内置函数的使用全解析

 更新时间:2026年05月12日 09:05:52   作者:重生之小比特  
大家在写 SQL 时,经常会遇到处理日期,拼接字符串等场景,如果手写逻辑又麻烦又容易错,其实 MySQL 早就给我们准备好了内置函数,直接调用就能搞定大部分需求,下面小编就和大家系统讲解一下吧

大家在写 SQL 时,经常会遇到处理日期、拼接字符串、数字计算、空值判断等场景。如果手写逻辑又麻烦又容易错,其实 MySQL 早就给我们准备好了内置函数,直接调用就能搞定大部分需求。

今天这篇文章,我把 MySQL 最常用的日期、字符串、数学、其他常用函数一次性整理好,配案例 + 表格,新手也能直接上手用!

一、日期函数(最常用,必背)

日常开发中,记录时间、计算天数、加减时间全靠它。

函数作用
current_date()获取当前日期(年月日)
current_time()获取当前时间(时分秒)
current_timestamp()当前时间戳(年月日时分秒)
now()当前日期时间(和 timestamp 效果一致)
date(datetime)提取日期部分,去掉时间
date_add (date, interval 数值 单位)日期加时间
date_sub (date, interval 数值 单位)日期减时间
datediff(date1, date2)计算两个日期相差天数

常用单位

year、month、day、hour、minute、second

快速示例

-- 当前日期
SELECT current_date(); 

-- 当前时间
SELECT current_time(); 

-- 当前完整时间
SELECT now(); 

-- 日期加10天
SELECT date_add('2017-10-28', interval 10 day); 

-- 日期减2天
SELECT date_sub('2017-10-1', interval 2 day); 

-- 计算日期差
SELECT datediff('2017-10-10', '2016-09-01'); 

实战小案例

建表存生日

CREATE TABLE tmp(
    id INT PRIMARY KEY AUTO_INCREMENT,
    birthday DATE
);
INSERT INTO tmp(birthday) VALUES(current_date());

留言表:只显示日期、查 2 分钟内发布的帖子

CREATE TABLE msg (
    id INT PRIMARY KEY AUTO_INCREMENT,
    content VARCHAR(30) NOT NULL,
    sendtime DATETIME
);
INSERT INTO msg(content,sendtime) VALUES('hello1', now());

-- 只显示日期,不显示时间
SELECT content, date(sendtime) FROM msg;

-- 查询2分钟内发布的帖子
SELECT * FROM msg WHERE date_add(sendtime, interval 2 minute) > now();

二、字符串函数(拼接、截取、替换)

处理文本、姓名、内容展示时高频使用。

函数作用
charset(str)返回字符串字符集
concat(s1,s2...)字符串拼接
instr(str,sub)子串第一次出现位置
ucase/upper转大写
lcase/lower转小写
left(str,len)从左边取 len 个字符
length(str)字符串字节长度
replace(str,old,new)字符串替换
substring(str,pos,len)截取字符串
trim/ltrim/rtrim去空格

快速示例

-- 拼接字符串
SELECT concat('张三', '的语文是', 90, '分');

-- 字符串长度(字节)
SELECT length('张三');

-- 替换字符
SELECT replace('Smith', 'S', '上海');

-- 截取第2个字符开始,取2个
SELECT substring('Smith', 2, 2);

-- 首字母小写
SELECT concat(lcase(substring(ename,1,1)), substring(ename,2)) FROM emp;

三、数学函数(计算、取整、随机数)

做统计、报表、数值处理必备。

函数作用
abs(x)绝对值
ceiling(x)向上取整
floor(x)向下取整
format(x,n)保留 n 位小数(四舍五入)
rand()0~1 随机小数
mod(x,y)取余 / 取模
conv(x,from,to)进制转换

快速示例

-- 绝对值
SELECT abs(-100.2); 

-- 向上取整
SELECT ceiling(23.04); 

-- 向下取整
SELECT floor(23.7); 

-- 保留2位小数
SELECT format(12.3456, 2); 

-- 随机数
SELECT rand(); 

四、其他高频函数(必须会)

这些函数在项目里几乎天天用。

函数作用
user()当前数据库用户
database()当前数据库名
md5(str)MD5 加密(32 位)
password()MySQL 用户加密
ifnull(val1,val2)val1 为 NULL 则返回 val2,否则返回 val1

快速示例

-- 当前用户
SELECT user(); 

-- 当前库
SELECT database(); 

-- MD5加密
SELECT md5('admin'); 

-- NULL处理
SELECT ifnull(null, '默认值'); 

五、实战 OJ 小练习

题目:查找字符串 '10,A,B' 中逗号 ',' 出现的次数。

思路:用原长度 - 去掉逗号后的长度 = 逗号个数。

SELECT 
    length('10,A,B') - length(replace('10,A,B', ',', '')) AS cnt;

六、总结(一张图记住)

  • 日期:now / date_add / date_sub / datediff
  • 字符串:concat / replace / substring / length
  • 数学:abs / ceiling / floor / format / rand
  • 通用:ifnull / md5 / user / database

把这些函数背熟,80% 的日常 SQL 都能轻松写出来,代码更简洁、效率更高!

到此这篇关于MySQL数据库中内置函数的使用全解析的文章就介绍到这了,更多相关MySQL内置函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA配置连接MYSQL数据库遇到Failed这个问题解决

    IDEA配置连接MYSQL数据库遇到Failed这个问题解决

    这篇文章主要介绍了IDEA配置连接MYSQL数据库遇到Failed这个问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • MySQL慢查询排查和优化的详细步骤教学

    MySQL慢查询排查和优化的详细步骤教学

    慢SQL的排查和优化是数据库性能调优的关键环节,尤其是在高并发环境下,慢 SQL 可能会导致性能瓶颈,影响应用响应速度,以下是关于如何排查和优化慢 SQL 的详细步骤,感兴趣的小伙伴可以跟随小编一起学习一下
    2026-03-03
  • 一文教你学会定位线上MySQL锁超时问题

    一文教你学会定位线上MySQL锁超时问题

    这篇文章主要介绍了一文教你学会定位线上MySQL锁超时问题,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • MySQL建表和增添改查操作代码

    MySQL建表和增添改查操作代码

    这篇文章主要介绍了MySQL建表和增添改查操作代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • MySQL 用户权限与安全管理最佳实践

    MySQL 用户权限与安全管理最佳实践

    MySQL用户权限与安全管理是保障数据库系统稳定与安全的重要环节,通过合理设计权限模型、使用 GRANT/REVOKE命令管理权限、实施最小权限原则以及加强密码,可以大幅降低数据库被非法访问和数据泄露的风险,这篇文章主要介绍了MySQL 用户权限与安全管理,需要的朋友可以参考下
    2025-03-03
  • mysql删除重复行的实现方法

    mysql删除重复行的实现方法

    这篇文章主要介绍了mysql删除重复行的实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • MySQL中索引添加与删除的操作方法详解

    MySQL中索引添加与删除的操作方法详解

    MySQL索引是提高查询性能的关键,文章详细介绍了如何添加和删除索引,包括使用ALTER TABLE和CREATE INDEX语句,还讨论了索引类型、查看索引信息、最佳实践和注意事项,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • mysql通过@变量实现递归详细实例

    mysql通过@变量实现递归详细实例

    众所周知目前的mysql版本中并不支持直接的递归查询,下面这篇文章主要给大家介绍了关于mysql通过@变量实现递归的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • MySQL修改时间添加时间自动更新的两种方法

    MySQL修改时间添加时间自动更新的两种方法

    这篇文章主要介绍了MySQL修改时间添加时间自动更新的两种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • IDEA连接mysql又报错!Server returns invalid timezone. Go to tab and set serverTimezone  prope的问题

    IDEA连接mysql又报错!Server returns invalid timezone. Go to tab an

    这篇文章主要介绍了IDEA连接mysql又报错!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope问题,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2020-05-05

最新评论