【MySQL】 内置函数

目录

  • 1.时间函数
  • 2.字符串函数
  • 3.数学函数
  • 4.其他函数

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()当前日期时间
  • 样例
//获取当前的年月日
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2025-06-24     |
+----------------+
1 row in set (0.00 sec)//获取当前的时分秒
mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 14:50:45       |
+----------------+
1 row in set (0.00 sec)//获取当前的时间戳
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2025-06-24 14:51:15 |
+---------------------+
1 row in set (0.00 sec)//返回获取时间戳的日期部分
mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2025-06-24                |
+---------------------------+
1 row in set (0.00 sec)//当前日期+5天
mysql> select date_add('2004-02-20',interval 5 day);
+---------------------------------------+
| date_add('2004-02-20',interval 5 day) |
+---------------------------------------+
| 2004-02-25                            |
+---------------------------------------+
1 row in set (0.00 sec)//当前日期减去10天
mysql> select date_sub('2025=06-24',interval 10 day);
+----------------------------------------+
| date_sub('2025=06-24',interval 10 day) |
+----------------------------------------+
| 2025-06-14                             |
+----------------------------------------+
1 row in set, 1 warning (0.00 sec)//计算两个日期直接相差的天数
mysql> select datediff(current_date(),'2004-02-20');
+---------------------------------------+
| datediff(current_date(),'2004-02-20') |
+---------------------------------------+
|                                  7795 |
+---------------------------------------+
1 row in set (0.00 sec)//获取当前日期和时间
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2025-06-24 14:55:32 |
+---------------------+
1 row in set (0.00 sec)//创建一张留言表
mysql> create table msg(-> id int primary key auto_increment,-> content varchar(30) not null,-> sendtime datetime-> );
Query OK, 0 rows affected (0.03 sec)
mysql> desc msg;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int         | NO   | PRI | NULL    | auto_increment |
| content  | varchar(30) | NO   |     | NULL    |                |
| sendtime | datetime    | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
//向表中插入数据
mysql> insert into msg(content,sendtime) values('人生自古谁无死',now());
Query OK, 1 row affected (0.00 sec)
mysql> insert into msg(content,sendtime) values('留取丹心照汗青',now());
Query OK, 1 row affected (0.00 sec)
//查表
mysql> select *from msg;
+----+-----------------------+---------------------+
| id | content               | sendtime            |
+----+-----------------------+---------------------+
|  1 | 人生自古谁无死        | 2025-06-24 14:58:31 |
|  2 | 留取丹心照汗青        | 2025-06-24 14:58:46 |
+----+-----------------------+---------------------+
2 rows in set (0.00 sec)
//显示所有留言的信息,只要日期,不要时间
mysql> select  content,date(sendtime) from msg;
+-----------------------+----------------+
| content               | date(sendtime) |
+-----------------------+----------------+
| 人生自古谁无死        | 2025-06-24     |
| 留取丹心照汗青        | 2025-06-24     |
+-----------------------+----------------+
2 rows in set (0.00 sec)
//查询在5分钟之内的留言信息
mysql> select * from msg where date_add(sendtime,interval 5 minute)>now();
+----+-----------------------+---------------------+
| id | content               | sendtime            |
+----+-----------------------+---------------------+
|  1 | 人生自古谁无死        | 2025-06-24 14:58:31 |
|  2 | 留取丹心照汗青        | 2025-06-24 14:58:46 |
+----+-----------------------+---------------------+
2 rows in set (0.00 sec)

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,postion [,length])从str的postion位置开始,取length个字符
ltrim(string) rtrim(string) trim(string)去除前空格/后空格
  • 样例
//获取emp表ename列的字符集
mysql> select charset(ename) from emp;
+----------------+
| charset(ename) |
+----------------+
| utf8mb3        |
| utf8mb3        |
| utf8mb3        |
| utf8mb3        |
+----------------+
14 rows in set (0.00 sec)mysql> select *from exam_result;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  1 | 唐三藏    |     134 |   98 |      56 |
|  3 | 猪悟能    |     176 |   98 |      90 |
|  4 | 曹孟德    |     140 |   90 |      67 |
|  5 | 刘玄德    |     110 |  115 |      45 |
|  6 | 孙权      |     140 |   73 |      78 |
|  7 | 宋公明    |     150 |   95 |      30 |
+----+-----------+---------+------+---------+
6 rows in set (0.00 sec)
//要求显示exam_result表中的信息,显示格式:姓名:XXX,总分:XXX,语文:XXXX,数学:XXX,英语:XXX
mysql> select concat('姓名:',name,',总分:',english+math+chinese ,',.语文:',chinese,,.数学:',math,,.英语:',eglish) as mag from exam_result;
+-------------------------------------------------------------------------+
| mag                                                                     |
+-------------------------------------------------------------------------+
| 姓名:唐三藏,总分:288,语文:134,数学:98,英语:56                     |
| 姓名:猪悟能,总分:364,语文:176,数学:98,英语:90                     |
| 姓名:曹孟德,总分:297,语文:140,数学:90,英语:67                     |
| 姓名:刘玄德,总分:270,语文:110,数学:115,英语:45                    |
| 姓名:孙权,总分:291,语文:140,数学:73,英语:78                       |
| 姓名:宋公明,总分:275,语文:150,数学:95,英语:30                     |
+-------------------------------------------------------------------------+
6 rows in set (0.00 sec)//找后一个字符串在前一个字符串的什么位置
mysql> select instr('abcd1234ABCD','1234');
+------------------------------+
| instr('abcd1234ABCD','1234') |
+------------------------------+
|                            5 |
+------------------------------+
1 row in set (0.00 sec)
//转换成大写
mysql> select ucase('abcd1234ABCD');
+-----------------------+
| ucase('abcd1234ABCD') |
+-----------------------+
| ABCD1234ABCD          |
+-----------------------+
1 row in set (0.00 sec)
//转换成小写
mysql> select lcase('abcd1234ABCD');
+-----------------------+
| lcase('abcd1234ABCD') |
+-----------------------+
| abcd1234abcd          |
+-----------------------+
1 row in set (0.00 sec)
//从字符串左边开始取length个字符
mysql> select left('abcdefghi',4);
+---------------------+
| left('abcdefghi',4) |
+---------------------+
| abcd                |
+---------------------+
1 row in set (0.00 sec)
//从字符串右边开始取length个字符
mysql> select right('abcdefghi',4);
+----------------------+
| right('abcdefghi',4) |
+----------------------+
| fghi                 |
+----------------------+
1 row in set (0.00 sec)
//求字符串的长度
mysql> select length('abcdef');
+------------------+
| length('abcdef') |
+------------------+
|                6 |
+------------------+
1 row in set (0.01 sec)mysql> select * from emp;
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| empno  | ename  | job       | mgr  | hiredate            | sal     | comm    | deptno |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| 007369 | SMITH  | CLERK     | 7902 | 1980-12-17 00:00:00 |  800.00 |    NULL |     20 |
| 007499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 00:00:00 | 1600.00 |  300.00 |     30 |
| 007521 | WARD   | SALESMAN  | 7698 | 1981-02-22 00:00:00 | 1250.00 |  500.00 |     30 |
| 007566 | JONES  | MANAGER   | 7839 | 1981-04-02 00:00:00 | 2975.00 |    NULL |     20 |
| 007654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 |     30 |
| 007698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 00:00:00 | 2850.00 |    NULL |     30 |
| 007782 | CLARK  | MANAGER   | 7839 | 1981-06-09 00:00:00 | 2450.00 |    NULL |     10 |
| 007788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 00:00:00 | 3000.00 |    NULL |     20 |
| 007839 | KING   | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 |    NULL |     10 |
| 007844 | TURNER | SALESMAN  | 7698 | 1981-09-08 00:00:00 | 1500.00 |    0.00 |     30 |
| 007876 | ADAMS  | CLERK     | 7788 | 1987-05-23 00:00:00 | 1100.00 |    NULL |     20 |
| 007900 | JAMES  | CLERK     | 7698 | 1981-12-03 00:00:00 |  950.00 |    NULL |     30 |
| 007902 | FORD   | ANALYST   | 7566 | 1981-12-03 00:00:00 | 3000.00 |    NULL |     20 |
| 007934 | MILLER | CLERK     | 7782 | 1982-01-23 00:00:00 | 1300.00 |    NULL |     10 |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
14 rows in set (0.00 sec)
//将ename列字符串中存在的'S'改成'上海'
mysql> select replace(ename,'S','上海') ,ename from emp;
+-----------------------------+--------+
| replace(ename,'S','上海')   | ename  |
+-----------------------------+--------+
| 上海MITH                    | SMITH  |
| ALLEN                       | ALLEN  |
| WARD                        | WARD   |
| JONE上海                    | JONES  |
| MARTIN                      | MARTIN |
| BLAKE                       | BLAKE  |
| CLARK                       | CLARK  |
| 上海COTT                    | SCOTT  |
| KING                        | KING   |
| TURNER                      | TURNER |
| ADAM上海                    | ADAMS  |
| JAME上海                    | JAMES  |
| FORD                        | FORD   |
| MILLER                      | MILLER |
+-----------------------------+--------+
14 rows in set (0.00 sec)
//比较两个字符串的大小
mysql> select strcmp('abd','abc');
+---------------------+
| strcmp('abd','abc') |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0.00 sec)
//截取EMP表中ename字段的第二个到第三个字符
mysql> select substring(ename,2,2),ename from emp;
+----------------------+--------+
| substring(ename,2,2) | ename  |
+----------------------+--------+
| MI                   | SMITH  |
| LL                   | ALLEN  |
| AR                   | WARD   |
| ON                   | JONES  |
| AR                   | MARTIN |
| LA                   | BLAKE  |
| LA                   | CLARK  |
| CO                   | SCOTT  |
| IN                   | KING   |
| UR                   | TURNER |
| DA                   | ADAMS  |
| AM                   | JAMES  |
| OR                   | FORD   |
| IL                   | MILLER |
+----------------------+--------+
14 rows in set (0.00 sec)//去除空格
mysql> select trim('      你好           ') as msg;
+--------+
| msg    |
+--------+
| 你好   |
+--------+
1 row in set (0.00 sec)
mysql> select ltrim('      你好           ') as msg;
+-------------------+
| msg               |
+-------------------+
| 你好              |
+-------------------+
1 row in set (0.00 sec)
mysql> select rtrim('      你好           ') as msg;
+--------------+
| msg          |
+--------------+
|       你好   |
+--------------+
1 row in set (0.00 sec)
//以首字母小写的方式显示所有员工的姓名
mysql> select ename,concat(lcase(substring(ename,1,1)),substring(ename,2)) as ename from emp;
+--------+--------+
| ename  | ename  |
+--------+--------+
| SMITH  | sMITH  |
| ALLEN  | aLLEN  |
| WARD   | wARD   |
| JONES  | jONES  |
| MARTIN | mARTIN |
| BLAKE  | bLAKE  |
| CLARK  | cLARK  |
| SCOTT  | sCOTT  |
| KING   | kING   |
| TURNER | tURNER |
| ADAMS  | aDAMS  |
| JAMES  | jAMES  |
| FORD   | fORD   |
| MILLER | mILLER |
+--------+--------+
14 rows in set (0.00 sec)

3.数学函数

函数名称描述
abs(number)绝对值函数
bin(number)十进制转二进制
hex(number)转换成十六进制
conv(number,from_base,to_base)进制转换
ceiling(number)向上取整
floor(number)向下取整
format(number,decimal_places)格式化,保留小数位数
rand()生成随机数
mod(number,denominator)取模,求余
  • 样例
//求绝对值
mysql> select abs(12);
+---------+
| abs(12) |
+---------+
|      12 |
+---------+
1 row in set (0.00 sec)
mysql> select abs(-12);
+----------+
| abs(-12) |
+----------+
|       12 |
+----------+
1 row in set (0.00 sec)
//转换成二进制
mysql> select bin(10);
+---------+
| bin(10) |
+---------+
| 1010    |
+---------+
1 row in set (0.00 sec)
//转换成十六进制
mysql> select hex(10);
+---------+
| hex(10) |
+---------+
| A       |
+---------+
1 row in set (0.00 sec)
//将10从十进制转换成十六进制
mysql> select conv(10,10,16);
+----------------+
| conv(10,10,16) |
+----------------+
| A              |
+----------------+
1 row in set (0.00 sec)
//向上取整
mysql> select ceiling(4.1);
+--------------+
| ceiling(4.1) |
+--------------+
|            5 |
+--------------+
1 row in set (0.00 sec)
mysql> select ceiling(-4.3);
+---------------+
| ceiling(-4.3) |
+---------------+
|            -4 |
+---------------+
1 row in set (0.00 sec)
//向下取整
mysql> select floor(4.1);
+------------+
| floor(4.1) |
+------------+
|          4 |
+------------+
1 row in set (0.00 sec)
mysql> select floor(-4.3);
+-------------+
| floor(-4.3) |
+-------------+
|          -5 |
+-------------+
1 row in set (0.00 sec)
//格式化,保留2位小数
mysql> select format(3.1415926,2);
+---------------------+
| format(3.1415926,2) |
+---------------------+
| 3.14                |
+---------------------+
1 row in set (0.00 sec)
//生成随机数 范围[0.0,1.0)
mysql> select rand();
+------------------+
| rand()           |
+------------------+
| 0.74572997237158 |
+------------------+
1 row in set (0.00 sec)
//取模
mysql> select mod(10,3);
+-----------+
| mod(10,3) |
+-----------+
|         1 |
+-----------+
1 row in set (0.00 sec)

4.其他函数

//user() 查询当前用户
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
//md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
mysql> select md5('123456');
+----------------------------------+
| md5('123456')                    |
+----------------------------------+
| e10adc3949ba59abbe56e057f20f883e |
+----------------------------------+
1 row in set (0.00 sec)
//ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
select ifnull('abc', '123');
+----------------------+
| ifnull('abc', '123') |
+----------------------+
| abc 				   |
+----------------------+
1 row in set (0.01 sec)
select ifnull(null, '123');
+---------------------+
| ifnull(null, '123') |
+---------------------+
| 123 				  |
+---------------------+
1 row in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/bicheng/87520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RK3568+PG2L50H开发板实验例程】Linux部分/FAN 检测案例

本原创文章由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com) 1.案例简介 本案例旨在介绍如何测试开发板上风扇接口控制风扇启停与调速功能 2. FAN接口介绍 开发板上 FAN接口是一个…

Spring AI ETL Pipeline使用指南

前言(Introduction) 版本声明:本文基于 Spring AI 1.0.0 版本编写。由于 Spring AI 目前仍处于活跃开发阶段,API 和组件可能在后续版本中发生变化,请注意及时关注官方文档更新以保持兼容性。 在当今大数据和人工智能快…

Docker 入门教程(九):容器网络与通信机制

文章目录 🐳 Docker 入门教程(九):容器网络与通信机制一、Docker 网络模型二、Docker 的四种网络类型三、容器间通信机制四、相关指令 🐳 Docker 入门教程(九):容器网络与通信机制 一…

从进攻性安全角度简析 Windows PowerShell

PowerShell 是 Windows 系统中强大的脚本语言和命令行工具,因其灵活性和与 .NET 框架的深度集成,成为攻击者执行恶意操作的热门选择。从进攻性安全视角看,PowerShell 的语言模式、执行策略(Execution Policy)、AMSI 绕…

MySQL的深度分页如何优化!

MySQL深度分页(例如 LIMIT 1000000, 20)性能差的主要原因在于 OFFSET 需要扫描并跳过大量数据,即使这些数据最终并不返回。随着 OFFSET 增大,性能会急剧下降。 以下是优化深度分页的常用策略,根据场景选择最适合的方案…

K8s Pod 调度基础——1

目录 一、Replication Controller&ReplicaSet ‌一、Replication Controller (RC)‌ ‌原理‌ ‌特性‌ ‌意义‌ ‌示例与逐行解释‌ ‌二、ReplicaSet (RS)‌ ‌原理‌ ‌特性‌ ‌意义‌ ‌示例与逐行解释‌ ‌三、RC 与 RS 的对比‌ ‌四、总结‌ 二、Dea…

C# Task异步的常用方法

Task异步的常用方法 C# 中的 Task 类是 System.Threading.Tasks 命名空间的一部分,用于表示异步操作。 一、Task.Run(Action action): 此静态方法用于在后台运行一个新任务,并返回与该任务关联的 Task 实例。 本质是将任务放入线程池执行,自…

OpenResty实战之PB级物联网数据处理:时序数据库优化实战

某智慧能源平台通过本方案成功处理了日均1.2万亿数据点,存储成本降低70%,查询延迟从分钟级优化到亚秒级。本文将深入解析PB级物联网数据处理的核心挑战与时序数据库深度优化技巧。 一、物联网数据特性与存储挑战 1.1 物联网数据核心特征 #mermaid-svg-U…

聊聊架构(5)数字化时代的平台商业架构

在数字化浪潮的推动下,平台经济已成为全球经济增长的关键驱动力。作为架构师,不仅要精通架构设计的基础方法论,还需具备敏锐的商业洞察力。架构的价值在于服务业务和商业,而业务的发展又促使架构不断演进。本文将深入探讨平台的商…

【数据增强】精细化贴图数据增强

1.任务背景 假设我有100个苹果的照片,我需要把这些照片粘贴到传送带照片上,模拟“传送带苹果检测”场景。 这种贴图的方式更加合理一些,因为yolo之类的mosaic贴图,会把图像弄的非常支离破碎。 现在我需要随机选择几张苹果图像&am…

HTML响应式Web设计

什么是响应式Web设计&#xff1f; RWD指的是响应式Web设计&#xff08;Responsive Web Design)RWD能够以可变尺寸传递网页RWD对于平板和移动设备是必需的 创建一个响应式设计&#xff1a; <!DOCTYPE html> <html lang"en-US"> <head> <styl…

【读代码】百度开源大模型:ERNIE项目解析

一、项目基本介绍 1.1 项目概述 ERNIE(Enhanced Representation through kNowledge IntEgration)是百度基于PaddlePaddle深度学习框架开发的多模态预训练模型体系。最新发布的ERNIE 4.5系列包含10个不同变体,涵盖从300B参数的巨型MoE模型到0.3B的轻量级模型,形成完整的多…

2025年6月:技术探索与生活平衡的协奏曲

> 当代码与晨跑轨迹在初夏的阳光下交织,我找到了程序员生活的黄金分割点 --- ### 一、技术突破:AI驱动的智能工作流优化系统 这个月我成功部署了第三代自动化工作流系统,核心创新在于**动态决策树+实时反馈机制**。系统可自主优化处理路径,错误率下降62%! ```pyth…

如何查看服务器运行了哪些服务?

&#x1f7e2; 一、Linux服务器Linux下&#xff0c;常用以下几种方法&#xff1a;✅ 1. 查看所有正在监听端口的服务netstat -tulnp 含义&#xff1a;-t TCP-u UDP-l 监听状态-n 显示端口号-p 显示进程号和程序名示例输出&#xff1a;pgsql复制编辑Proto Recv-Q Send-Q Local A…

【Linux基础知识系列】第三十八篇 - 打印系统与 PDF 工具

在Linux系统中&#xff0c;打印和PDF处理是日常办公和文档管理中不可或缺的功能。CUPS&#xff08;Common Unix Printing System&#xff09;是Linux中常用的打印服务&#xff0c;它提供了打印任务的管理和打印设备的配置功能。同时&#xff0c;Linux也提供了多种PDF处理工具&a…

STM32CUBEMX 使用教程6 — TIM 定时器配置、定时中断

往期文章推荐&#xff1a; STM32CUBEMX 使用教程5 — DMA配置 & 串口结合DMA实现数据搬运 STM32CUBEMX 使用教程4 — 串口 (USART) 配置、重定向 printf 输出 STM32CUBEMX 使用教程3 — 外部中断&#xff08;EXTI&#xff09;的使用 STM32CUBEMX 使用教程2 — GPIO的使…

微信小程序实现table表格

微信小程序没有table标签&#xff0c;运用display:table和display:flex实现一个内容字数不固定表格…… wxml&#xff1a; <view class"ContentShow"> <view class"conht">烟台市新闻发布会登记审批表</view> <view class"tabl…

MySQL 基本面试题

目录 一、SQL的基本操作 1、SQL查询的执行顺序 2、count(*)、count(1) 、count(列名) 的区别 3、char 和 varchar 的区别 4、MySQL 中常用的基础函数 5、MySQL的执行流程 6、MyISAM和InnoDB的区别 二、事务 1、事务的基本概念 2、事务的四大特性&#xff08;ACID) 3…

WPF学习笔记(12)下拉框控件ComboBox与数据模板

下拉框控件ComboBox与数据模板 一、ComboBox1. ComboBox概述2. ItemsControl类3. Selector类4. ComboBox类 二、ComboBox数据模板总结 一、ComboBox 1. ComboBox概述 ComboBox类代表一个有下拉列表的选择控件&#xff0c;供用户选择。 官方文档&#xff1a;https://learn.mic…

Docker for Windows 设置国内镜像源教程

在使用 Docker 时&#xff0c;由于默认的 Docker Hub 镜像源位于国外&#xff0c;国内用户在拉取镜像时可能会遇到速度慢或连接不稳定的问题。为了加速镜像拉取&#xff0c;可以将 Docker 配置为使用国内镜像源。以下是适用于 Windows 系统的详细配置方法&#xff1a; 方法一&…