当前位置: 首页 > news >正文

MySQL函数大全(持续更新)

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 常用“高阶函数”大全(适合复杂查询和高级数据处理场景)。

相关文章:

  • 暂存合并分支
  • 准确-nginx快速编译安装
  • jvm汇总
  • el-input 不可编辑,但是点击的时候出现弹窗/或其他操作面板,并且带可清除按钮
  • C++特性——RAII、智能指针
  • 在VMware上部署【Ubuntu】
  • Linux信号的处理
  • vue学习八
  • Apache Tomcat漏洞公开发布仅30小时后即遭利用
  • 技术进阶:Open WebUI与Ollama的跨平台整合秘籍
  • 一、人工智能开发入门
  • 贪心算法(9)(java)最优除法
  • Apache Paimon 在抖音集团多场景中的优化实践
  • 昆仑万维开源R1V:38B参数多模态推理模型开启AI新纪元
  • 网络编程中的黏包和半包问题
  • [AI]实现简易AI Agent — — Transformers库
  • HTTP+DNS综合实验
  • Java面试黄金宝典3
  • 链表操作:分区与回文判断
  • (超详细) ETL工具之Kettle
  • 《卿本著者》译后记等内容被指表述不当,江苏人民出版社:即日下架
  • 国新办发布会丨2024年市监部门查办知产领域侵权行政违法案件4.4万件
  • 上海银行一季度净赚逾62亿增2.3%,不良贷款率与上年末持平
  • 中国海警登临铁线礁开展维权行动并展示五星红旗
  • 百年前的亚裔艺术家与巴黎
  • 小鹏机器人IRON亮相上海车展,何小鹏:相信更多人形机器人会现身车展