MySQL 函数

MySQL 函数

MySQL 函数是预先定义的代码块,用于实现特定的数据处理逻辑(如计算、字符串操作、日期转换等),可直接在 SQL 语句中调用,简化复杂查询。按功能分为内置函数自定义函数

内置函数(常用分类)

函数类别 常用函数示例 功能说明
字符串函数 CONCAT(str1, str2)SUBSTRING(str, start, len)LENGTH(str) 拼接字符串、截取子串、获取字符串长度(字节数)。
数值函数 SUM(col)AVG(col)MAX(col)MIN(col)ROUND(num, dec) 求和、求平均、求最大/最小值、四舍五入(保留 dec 位小数)。
日期函数 NOW()DATE_FORMAT(date, format)DATEDIFF(date1, date2) 获取当前时间、格式化日期(如 %Y-%m-%d)、计算两个日期相差天数。
逻辑函数 IF(condition, val1, val2)CASE WHEN condition THEN val1 ELSE val2 END 条件判断(IF:满足条件返回 val1,否则 val2;CASE:多条件分支)。
聚合函数 COUNT(col)GROUP_CONCAT(col) 统计行数(注意 COUNT(*) 统计所有行,COUNT(col) 忽略 NULL)、拼接分组内字段。

自定义函数(UDF)

当内置函数无法满足需求时,可自定义函数,用于实现特定业务逻辑(如计算身份证校验位、转换编码等)。

语法格式

-- 创建自定义函数
DELIMITER //  -- 临时修改语句结束符(默认是;,避免函数内;被误识别)
CREATE FUNCTION 函数名(参数名 参数类型) 
RETURNS 返回类型  -- 函数必须有返回值
DETERMINISTIC  -- 相同输入返回相同结果(可选,优化性能)
BEGIN
    -- 函数体(变量定义、逻辑处理)
    DECLARE 变量名 变量类型 DEFAULT 默认值;  -- 定义局部变量
    -- 业务逻辑(如计算两数之和)
    SET 变量名 = 参数1 + 参数2;
    RETURN 变量名;  -- 返回结果
END //
DELIMITER ;  -- 恢复语句结束符为;

-- 调用自定义函数
SELECT 函数名(参数值1, 参数值2);

-- 删除自定义函数
DROP FUNCTION IF EXISTS 函数名;

示例:自定义函数计算两数之和

-- 创建函数 add_two_num
DELIMITER //
CREATE FUNCTION add_two_num(a INT, b INT)
RETURNS INT
DETERMINISTIC
BEGIN
    DECLARE sum INT DEFAULT 0;
    SET sum = a + b;
    RETURN sum;
END //
DELIMITER ;

-- 调用函数
SELECT add_two_num(3, 5);  -- 结果:8

-- 删除函数
DROP FUNCTION IF EXISTS add_two_num;

函数与存储过程的区别

特性 函数(Function) 存储过程(Procedure)
返回值 必须有且仅有一个返回值(可用于 SELECT 语句中,如 SELECT func(1))。 可以没有返回值,也可以有多个返回值(通过 OUT/INOUT 参数),不能用于 SELECT。
调用场景 主要用于数据计算、转换,嵌入在 SELECT/UPDATE 等语句中。 主要用于执行批量操作(如批量插入、删除),通过 CALL 单独调用。
事务支持 一般不包含事务逻辑(若包含,可能影响函数的“确定性”)。 支持完整的事务操作(START TRANSACTION/COMMIT/ROLLBACK)。
posted @ 2025-10-29 16:04  Jing61  阅读(6)  评论(0)    收藏  举报