MySQL函数大全(持续更新)

news2025/3/20 22:32:41

MySQL常用函数

一、字符串函数

函数功能

CONCAT(s1, s2, ...)

拼接字符串

CONCAT_WS(sep, s1, s2, ...)

指定分隔符拼接字符串

SUBSTRING(str, start, length)

截取字符串

LEFT(str, length)

从左边截取指定长度字符串

RIGHT(str, length)

从右边截取指定长度字符串

LENGTH(str)

字符串字节长度(中文 3 字节,英文 1 字节)

CHAR_LENGTH(str)

字符串字符长度(中英文都算 1 个)

REPLACE(str, from, to)

字符串替换

TRIM(str)

去除前后空格

LOWER(str) / UPPER(str)

字符串转小写 / 大写

INSTR(str, substr)

查找子字符串首次出现位置(0 为不存在)

LPAD(str, length, pad_str)

左填充字符串

RPAD(str, length, pad_str)

右填充字符串

二、数值函数

函数功能
ABS(x)取绝对值
CEIL(x) / FLOOR(x)向上取整 / 向下取整
ROUND(x, d)四舍五入,保留 d 位小数
MOD(x, y)取模运算(x % y)
RAND()生成随机数
POW(x, y)幂运算,x 的 y 次方
SQRT(x)平方根

三、日期时间函数

函数功能
NOW() / CURRENT_TIMESTAMP()获取当前时间戳
CURDATE()获取当前日期(yyyy-MM-dd)
CURTIME()获取当前时间(HH:mm:ss)
DATE_FORMAT(date, format)格式化日期时间
UNIX_TIMESTAMP()获取当前 UNIX 时间戳
FROM_UNIXTIME(ts)将时间戳转换为日期格式
YEAR(date) / MONTH(date) / DAY(date)获取年 / 月 / 日
DATE_ADD(date, INTERVAL n DAY)日期加 n 天
DATEDIFF(d1, d2)两日期相差天数
TIMESTAMPDIFF(unit, d1, d2)返回两个日期差值(按单位:SECOND, MINUTE, HOUR, DAY, MONTH, YEAR)

四、聚合函数(GROUP BY 常用)

函数功能
COUNT()统计数量
SUM()求和
AVG()求平均值
MAX()求最大值
MIN()求最小值
GROUP_CONCAT()将多行结果拼接成一行字符串

五、条件与流程函数

函数功能
IF(expr, v1, v2)如果 expr 为真返回 v1,否则返回 v2
IFNULL(expr1, expr2)如果 expr1 为 NULL 返回 expr2
NULLIF(expr1, expr2)如果 expr1 = expr2 返回 NULL,否则返回 expr1
CASE WHEN ... THEN ... END多条件判断返回

六、加密函数

函数功能
MD5(str)计算字符串的 MD5 值
SHA1(str)计算字符串的 SHA1 值
PASSWORD(str)加密字符串(MySQL 内部使用)

七、其他常用函数

函数功能
UUID()生成一个唯一 UUID
VERSION()查看 MySQL 版本
DATABASE()获取当前数据库名
USER()获取当前用户

MySQL高阶函数

✅一、窗口函数(OVER())

MySQL 8.0 开始支持:

函数功能
ROW_NUMBER() OVER()为每行分配唯一序号(分组内排序后编号)
RANK() OVER()排名(遇到并列跳号)
DENSE_RANK() OVER()密集排名(并列不跳号)
NTILE(n) OVER()分成 n 组
SUM() OVER()窗口内累计求和
AVG() OVER()窗口内平均值
LAG(col, offset, default) OVER()获取上 n 行数据
LEAD(col, offset, default) OVER()获取下 n 行数据

💡 示例:

sql

复制编辑

SELECT employee_id, score, RANK() OVER(PARTITION BY department_id ORDER BY score DESC) AS dept_rank FROM performance;


✅ 二、JSON 函数

MySQL 原生支持 JSON 类型:

函数功能
JSON_OBJECT(k, v, ...)创建 JSON 对象
JSON_ARRAY(v1, v2, ...)创建 JSON 数组
JSON_EXTRACT(json_doc, path)提取 JSON 指定路径数据(别名:->
JSON_SET(json_doc, path, val)更新 JSON 指定路径数据
JSON_MERGE_PRESERVE(a, b)合并 JSON
JSON_CONTAINS(json_doc, val)判断 JSON 是否包含指定值

✅ 三、正则函数

函数功能
REGEXP_LIKE(str, pattern)是否匹配正则(MySQL 8.0+)
REGEXP_REPLACE(str, pattern, replacement)正则替换
REGEXP_SUBSTR(str, pattern)提取正则匹配子串(8.0+)

✅ 四、动态 SQL 函数(Prepared Statement)

功能示例
动态执行 SQL```
PREPARE stmt FROM 'SELECT * FROM users WHERE id = ?';
SET @id = 1;
EXECUTE stmt USING @id;
DEALLOCATE PREPARE stmt;

五、递归CTE函数(8.0+)

| 功能 | 示例 | |------------|----------------------------------------------|

| 递归查询组织架构 | ```WITH RECURSIVE org AS (SELECT id, name, parent_id FROM dept WHERE parent_id IS NULL UNION ALL SELECT d.id, d.name, d.parent_id FROM dept d INNER JOIN org o ON d.parent_id = o.id ) SELECT * FROM org;``` |

六、数学高阶函数

| 函数 | 功能 | |--------------|-------------------------|

| `LOG(base, x)` | 指定底数对数计算 |

| `EXP(x)` | e 的 x 次方 |

| `PI()` | 圆周率 |

| `SIN(x)` / `COS(x)` / `TAN(x)` | 三角函数计算 |

七、其他高级函数

| 函数 | 功能 |

|-----------------------|--------------------------------------|

| `GROUP_CONCAT(DISTINCT col ORDER BY col SEPARATOR ',')` | 聚合去重有序字符串拼接 | 

| `ELT(n, str1, str2, str3)` | 返回第 n 个字符串 |

| `FIELD(str, s1, s2, s3)` | 字符串在列表中位置(找不到返回 0) |

| `FIND_IN_SET(str, strlist)` | 在逗号分隔字符串集合中查找字符串的位置(从 1 开始) |

 以上是 MySQL 常用“高阶函数”大全(适合复杂查询和高级数据处理场景)。

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

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

相关文章

element-ui pagination 组件源码分享

pagination 分页组件源码分享,主要从以下三个方面: 1、pagination 组件页面结构。 2、pagination 组件属性。 3、pagination 组件方法。 一、组件页面结构。 二、组件属性。 2.1 small 是否使用小型分页样式,类型为 boolean,…

【css酷炫效果】纯CSS实现火焰文字特效

【css酷炫效果】纯CSS实现火焰文字特效 缘创作背景html结构css样式完整代码基础版进阶版(冰霜版) 效果图 想直接拿走的老板,链接放在这里:https://download.csdn.net/download/u011561335/90492005 缘 创作随缘,不定时更新。 创作背景 刚…

【java面型对象进阶】------继承实例

继承结构下的标准Javabean 代码如下: package demo10;//定义员工父类 public class Employee {private String id;private String name;private double salary;//构造方法public Employee(){}public Employee(String id,String name,double salary){this.idid;thi…

【数据分享】1999—2023年地级市固定资产投资和对外经济贸易数据(Shp/Excel格式)

在之前的文章中,我们分享过基于2000-2024年《中国城市统计年鉴》整理的1999-2023年地级市的人口相关数据、染物排放和环境治理相关数据、房地产投资情况和商品房销售面积相关指标数据、社会消费品零售总额和年末金融机构存贷款余额、各类用地面积、地方一般公共预算…

数据结构——串、数组和广义表

串、数组和广义表 1. 串 1.1 串的定义 串(string)是由零个或多个字符组成的有限序列。一般记为 S a 1 a 2 . . . a n ( n ≥ 0 ) Sa_1a_2...a_n(n\geq0) Sa1​a2​...an​(n≥0) 其中,S是串名,单引号括起来的字符序列是串的值, a i a_i a…

【Java代码审计 | 第十四篇】MVC模型、项目结构、依赖管理及配置文件概念详解

未经许可,不得转载。 文章目录 MVC模型模型(Model)视图(View)控制器(controller)MVC工作流程 项目结构java目录resources目录webapp目录 依赖管理配置文件 MVC模型 MVC(Model-View-…

单片机ADC+NTC温度采集电路学习

文章目录 前言一、NTC是什么?二、NTC重要参数三、实际应用举例四、NTC和PTC的区别总结 前言 NTC常用来检测外部环境或者电池温度,及汽车水温传感器。 有时候电池并不内置NTC,所以需要外置NTC来采集电池温度,注意要紧贴电池&#…

2025年,电脑还需要分区吗?

随着2025年的到来,电脑存储空间已经不像以前那么金贵,固态硬盘(SSD)容量更大、速度更快,云存储也成了日常标配。许多人开始质疑:电脑还需要像以前那样分区吗? 一、分区到底是什么意思&#xff…

一个成功的Git分支模型

本作品原发布账号为【白鸽子中文网】,现转至当前账号【飞翔中文网】。 反思备录(2020/3/5) 这个模型构思于2010年,现已过去10余年,(2010年)那时正处于Git诞生后不久。在这10年间,git-flow(本文中提到的分支模型) 在许多软件队伍里…

Kafka可视化工具KafkaTool工具的使用

Kafka Tool工具 介绍 使用Kafka的小伙伴,有没有为无法直观地查看 Kafka 的 Topic 里的内容而发过愁呢?下面推荐给大家一款带有可视化页面的Kafka工具:Kafka Tool (目前最新版本是 3.0.2) 注意:以前叫Kafk…

【嵌入式Linux】基于ArmLinux的智能垃圾分类系统项目

目录 1. 功能需求2. Python基础2.1 特点2.2 Python基础知识2.3 dict嵌套简单说明 3. C语言调用Python3.1 搭建编译环境3.2 直接调用python语句3.3 调用无参python函数3.4 调用有参python函数 4. 阿里云垃圾识别方案4.1 接入阿里云4.2 C语言调用阿里云Python接口 5. 香橙派使用摄…

网络安全漏洞与修复 网络安全软件漏洞

文章目录 一、软件漏洞的概念 1、信息安全漏洞简述2、软件漏洞3、软件漏洞概念4、软件漏洞的成因分析 二、软件漏洞标准化管理 1、软件漏洞分类2、软件漏洞分级3、安全漏洞管理规范 一、软件漏洞的概念 1、信息安全漏洞简述 信息安全漏洞是信息安风险的主要根源之一&…

STM32:Default_Handler问题

记录代码进入Default_Handler错误的解决办法 一、 问题表述 在一次调试代码的时候,发现代码卡死在启动文件 startup_at32f423xx_.s 的367行,即 B. 处B.是汇编代码,B:跳转到一个标号,这里跳转到一个‘.’,…

iwebsec-SQL数字型注入

1.判断是否存在漏洞 添加and 11发现正常显示,添加and 12无回显条目,则存在sql注入漏洞 2.因为有回显,尝试union联合注入,使用order by判断出有3个字段 3.使用union联合注入查看回显位,发现3三个字段均有回显&#xff…

基于Spring Boot的冷链物流系统的设计与实现的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

LLM(6):理解词嵌入

深度神经网络模型,包括 LLM,无法直接处理原始文本。由于文本是分类的,它与用于实现和训练神经网络的数学操作不兼容。因此,我们需要一种方法来将词语表示为连续值向量。 注意:如果读者对向量和张量不太了解&#xff0c…

SQLMesh系列教程:利用date_spine宏构建日期序列实践指南

引言:为什么需要日期维度表? 在数据分析和报表开发中,日期维度表是不可或缺的基础结构,其中包括一定日期范围的日期序列,每个序列包括对应日期属性,如年季月日、是否周末等。无论是计算日粒度销售额、分析…

Java 大视界 -- 企业数字化转型中的 Java 大数据战略与实践(93)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

linux:环境变量,进程地址空间

一.命令行参数 main的参数:int argc,char*argv[],char*env[] 1.参数意义: argc是命令行调用次程序时传递的参数 例: ls -l -a 传递了三个参数,“ls" "-l" "-a"三个字符串 argv是传递的参…

mybatis集合映射association与collection

官方文档&#xff1a;MyBatis的一对多关联关系 一、用途 一对一&#xff1a;association 一对多&#xff1a;collection 二、association 比较容易理解&#xff0c;可参考官方文档 三、collection <?xml version"1.0" encoding"UTF-8"?> &l…