news 2026/6/10 11:56:36

MySQL内置函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL内置函数

1. 日期函数

函数名称描述
current_date()当前日期
current_time()当前时间
current_timestamp()当前时间戳
date(datetime)返回 datetime 参数的日期部分
date_add(date, interval d_value_type)在 date 中添加日期或时间interval 后的数值单位可以是:year minute second day
date_sub(date, interval d_value_type)在 date 中减去日期或时间interval 后的数值单位可以是:year minute second day
datediff(date1, date2)两个日期的差,单位是天
now()当前日期时间
  • 在日期的基础上加日期
    select date_add('2017-10-28', interval 10 day); +-----------------------------------------+ | date_add('2017-10-28', interval 10 day) | +-----------------------------------------+ | 2017-11-07 | +-----------------------------------------+
  • 计算两个日期之间相差多少天
    select datediff('2017-10-10', '2016-9-1'); +------------------------------------+ | datediff('2017-10-10', '2016-9-1') | +------------------------------------+ | 404 | +------------------------------------+
  • 案例:创建一个留言表
    -创建一个留言表 mysql> create table msg ( -> id int primary key auto_increment, -> content varchar(30) not null, -> sendtime datetime -> ); Query OK, 0 rows affected (0.02 sec) mysql> insert into msg(content,sendtime) values('hello1', now()); Query OK, 1 row affected (0.01 sec) mysql> insert into msg(content,sendtime) values('hello2', now()); Query OK, 1 row affected (0.00 sec) mysql> select * from msg; +----+---------+---------------------+ | id | content | sendtime | +----+---------+---------------------+ | 1 | hello1 | 2025-12-14 10:59:45 | | 2 | hello2 | 2025-12-14 10:59:45 | +----+---------+---------------------+ 2 rows in set (0.00 sec) -显示所有留言信息,发布日期只显示日期,不用显示时间 mysql> select id,content,date(sendtime) from msg; +----+---------+----------------+ | id | content | date(sendtime) | +----+---------+----------------+ | 1 | hello1 | 2025-12-14 | | 2 | hello2 | 2025-12-14 | +----+---------+----------------+ 2 rows in set (0.00 sec) -查询在2分钟内发布的帖子 mysql> insert into msg (content,sendtime) value('straykids',now()); Query OK, 1 row affected (0.00 sec) mysql> select *from msg where date_add(sendtime,interval 2 minute) >now(); +----+-----------+---------------------+ | id | content | sendtime | +----+-----------+---------------------+ | 3 | straykids | 2025-12-14 11:04:48 | +----+-----------+---------------------+

    2. 字符函数

函数功能
charset(str)返回字符串字符集
concat(string2 [,…])连接字符串
instr(string, substring)返回 substring 在 string 中出现的位置,没有返回 0
ucase(string2)转换成大写
lcase(string2)转换成小写
left(string2, length)从 string2 中的左边起取 length 个字符
length(string)string 的长度
replace(str, search_str, replace_str)在 str 中用 replace_str 替换 search_str
strcmp(string1, string2)逐字符比较两字符串大小
substring(str, position [,length])从 str 的 position 开始,取 length 个字符
ltrim(string)、rtrim(string)、trim(string)去除前空格或后空格
  • 返回字符串字符集
    mysql> select charset('abskdfhlfhfo654'); +----------------------------+ | charset('abskdfhlfhfo654') | +----------------------------+ | utf8 | +----------------------------+ 1 row in set (0.00 sec)
  • 显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分
    select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from student;
  • 求学生表中学生姓名占用的字节数
    select length(name), name from student;

    :length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数; 如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数 (utf-8中文算三个字节)

    mysql> select length('123哈哈'); +---------------------+ | length('123哈哈') | +---------------------+ | 9 | +---------------------+ 1 row in set (0.00 sec)
  • 将EMP表中所有名字中有S的替换成'上海'
select replace(ename, 'S', '上海') ,ename from EMP;
  • 截取EMP表中ename字段的第二个到第三个字符
    select substring(ename, 2, 2), ename from EMP;
  • 以首字母小写的方式显示所有员工的姓名
    select concat(lcase(substring(ename, 1, 1)),substring(ename,2)) from EMP;

    3. 数字函数

函数名称描述常见用途
abs(number)绝对值函数处理数值的非负表示
bin(decimal_number)十进制转换二进制二进制数据处理、位运算场景
hex(decimalNumber)转换成十六进制内存地址、编码表示等场景
conv(number, from_base, to_base)进制转换多进制(如 2、8、10、16)间的数值转换
ceiling(number)向上取整资源分配、数量计算的向上估算
floor(number)向下取整数据分组、数量计算的向下估算
format(number, decimal_places)格式化,保留小数位数数值展示的精度控制
rand()返回随机浮点数,范围 [0.0,1.0)随机抽样、模拟场景等
mod(number, denominator)取模,求余周期判断、分组标识等
  • 绝对值
    select abs(-100.2);
  • 向上取整
    select ceiling(23.04);
  • 向下取整
    select floor(23.7);
  • 保留2位小数位数(小数四舍五入)
    select format(12.3456, 2);
  • 产生随机数
    select rand();

    4. 其它函数

  • user() 查询当前用户
    select user();
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
    -将任意长度的输入数据映射为固定长度的 128 位哈希值(32 位十六进制字符串) -本质是实现数据的 “指纹” 标识 select md5('admin') +----------------------------------+ | md5('admin') | +----------------------------------+ | 21232f297a57a5a743894a0e4a801fc3 | +----------------------------------+
  • database()显示当前正在使用的数据库
    select database();
  • password()函数,MySQL数据库使用该函数对用户加密
    select password('root'); +-------------------------------------------+ | password('root') | +-------------------------------------------+ | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-------------------------------------------+ 或者想要加密密码可以使用md5函数 但是存入md5函数查询也要使用 mysql> create table user_p ( -> name char(20), -> password varchar(32)); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO user_p (name,password) VALUES ('lex', md5('134565')); Query OK, 1 row affected (0.01 sec) mysql> select name from user_p where password=md5('134565'); +------+ | name | +------+ | lex | +------+ 1 row in set (0.00 sec)
  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 15:53:50

18、使用Python创建井字棋游戏与Twilio两步认证系统

使用Python创建井字棋游戏与Twilio两步认证系统 井字棋游戏开发 在开发井字棋游戏时,首先要创建一个能接受用户输入的网格,交替添加 “O” 或 “X”。我们为 TicTacToeGrid 组件制定规则,规定每个实例化的 TicTacToeGrid 的 cols 属性应设为 3。 以下是创建网格按钮…

作者头像 李华
网站建设 2026/6/10 16:34:01

终极Android架构实践指南:从零构建模块化应用

终极Android架构实践指南:从零构建模块化应用 【免费下载链接】android-showcase igorwojda/android-showcase: 是一个用于展示 Android 开发技巧和最佳实践的项目集合,包括了多种 Android 开发工具和技巧,可以用于学习 Android 开发知识。 …

作者头像 李华
网站建设 2026/6/9 19:26:11

PACKAGER.EXE:解决Word文档内嵌对象难题的利器

PACKAGER.EXE:解决Word文档内嵌对象难题的利器 【免费下载链接】packager.exe资源下载介绍 PACKAGER.EXE是一款专为微软Windows操作系统设计的实用工具,特别适用于解决Windows XP系统中Word文档内嵌对象无法打开的问题。通过该工具,用户可以轻…

作者头像 李华
网站建设 2026/6/9 18:38:03

32、虚拟化技术:KVM 与 VMware Server 全面解析

虚拟化技术:KVM 与 VMware Server 全面解析 1. KVM 相关操作 在使用 KVM 进行虚拟机管理时,有两个特殊的脚本选项值得关注: - --firstboot script :此选项与 --execscript 类似,不同之处在于它会将指定的脚本复制到虚拟机中,并在虚拟机首次启动时执行。 - --fir…

作者头像 李华
网站建设 2026/6/10 6:25:30

34、提升Ubuntu服务器容错性的方法与RAID配置指南

提升Ubuntu服务器容错性的方法与RAID配置指南 在服务器运行过程中,硬件故障是不可避免的。多年来,服务器上的各种主要硬件组件,如CPU、RAM、SCSI控制器,尤其是硬盘,都有可能出现故障。除了硬件故障,系统停机还可能由其他问题导致,比如交换机配置错误、停电,甚至是系统…

作者头像 李华
网站建设 2026/6/10 0:02:56

18、利用 Perl 开发 CGI 程序全解析

利用 Perl 开发 CGI 程序全解析 1. Perl 与 CGI 概述 在使用 Perl 进行 CGI 编程时,有几个要点需要注意。Perl 将其环境变量存储在哈希(有时称为“关联数组”) %ENV 中。若要引用环境变量 HOME ,可使用 $ENV{HOME} 。此外,本文会大量涉及使用名为 CGI.pm 的 Per…

作者头像 李华