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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值