📌 目录

  1. MySQL 内建函数概述
  2. 常用的 MySQL 函数类型
    • 2.1 字符串函数
    • 2.2 数学函数
    • 2.3 日期和时间函数
    • 2.4 聚合函数
    • 2.5 控制流函数
  3. MySQL 自定义函数
  4. 函数使用示例
  5. 参考资料

MySQL 内建函数概述

MySQL 提供了大量的内建函数,允许用户在查询中进行复杂的数据操作。这些函数根据其功能可以分为多种类型,包括字符串处理、数学运算、日期和时间操作、聚合计算等。


常用的 MySQL 函数类型

2.1 字符串函数

MySQL 提供了多种字符串处理函数,能够帮助你执行字符搜索、替换、截取、大小写转换等操作。

📌 常用字符串函数

  • CONCAT(str1, str2, ...):连接多个字符串。 SELECT CONCAT('Hello', ' ', 'World'); -- 输出:Hello World
  • LENGTH(str):返回字符串的字节长度。 SELECT LENGTH('Hello'); -- 输出:5
  • UPPER(str):将字符串中的字母转换为大写。 SELECT UPPER('hello'); -- 输出:HELLO
  • LOWER(str):将字符串中的字母转换为小写。 SELECT LOWER('HELLO'); -- 输出:hello
  • SUBSTRING(str, start, length):从指定位置开始截取指定长度的字符串。 SELECT SUBSTRING('Hello World', 1, 5); -- 输出:Hello
  • REPLACE(str, old_substr, new_substr):替换字符串中的指定部分。 SELECT REPLACE('Hello World', 'World', 'MySQL'); -- 输出:Hello MySQL

2.2 数学函数

MySQL 提供了多种数学函数,用于执行数值计算和数学运算。

📌 常用数学函数

  • ABS(x):返回 x 的绝对值。 SELECT ABS(-5); -- 输出:5
  • ROUND(x, d):返回四舍五入的数值,保留 d 位小数。 SELECT ROUND(123.4567, 2); -- 输出:123.46
  • FLOOR(x):返回不大于 x 的最大整数(向下取整)。 SELECT FLOOR(5.8); -- 输出:5
  • CEIL(x):返回不小于 x 的最小整数(向上取整)。 SELECT CEIL(5.2); -- 输出:6
  • POW(x, y):返回 x 的 y 次方。 SELECT POW(2, 3); -- 输出:8
  • RAND():返回一个 0 到 1 之间的随机数。 SELECT RAND(); -- 输出:0.857953 (随机数)

2.3 日期和时间函数

日期和时间函数用于处理日期、时间及其计算,广泛应用于时间戳、时间间隔计算等。

📌 常用日期和时间函数

  • NOW():返回当前日期和时间。 SELECT NOW(); -- 输出:2025-04-03 10:35:12
  • CURDATE():返回当前日期。 SELECT CURDATE(); -- 输出:2025-04-03
  • DATE_ADD(date, INTERVAL expr unit):给指定日期添加时间间隔。 SELECT DATE_ADD('2025-04-03', INTERVAL 1 DAY); -- 输出:2025-04-04
  • DATEDIFF(date1, date2):返回两个日期之间的天数差。 SELECT DATEDIFF('2025-04-03', '2025-01-01'); -- 输出:92
  • YEAR(date):返回指定日期的年份部分。 SELECT YEAR('2025-04-03'); -- 输出:2025

2.4 聚合函数

聚合函数通常用于处理和分析大量数据,常用于 GROUP BY 语句中。

📌 常用聚合函数

  • COUNT(*):返回记录的数量。 SELECT COUNT(*) FROM employees;
  • SUM(expr):返回表达式的总和。 SELECT SUM(salary) FROM employees;
  • AVG(expr):返回表达式的平均值。 SELECT AVG(salary) FROM employees;
  • MAX(expr):返回表达式的最大值。 SELECT MAX(salary) FROM employees;
  • MIN(expr):返回表达式的最小值。 SELECT MIN(salary) FROM employees;

2.5 控制流函数

MySQL 提供了控制流函数,允许在查询中进行条件判断和控制。

📌 常用控制流函数

  • IF(condition, true_value, false_value):根据条件返回不同的值。 SELECT IF(salary > 5000, 'High', 'Low') FROM employees;
  • CASE:类似于 IF 语句,但支持多个条件判断。 SELECT CASE WHEN salary > 5000 THEN 'High' WHEN salary > 3000 THEN 'Medium' ELSE 'Low' END FROM employees;
  • COALESCE(expr1, expr2, ...):返回第一个非 NULL 的值。 SELECT COALESCE(NULL, NULL, 'Hello', 'World'); -- 输出:Hello

MySQL 自定义函数

除了内建函数外,MySQL 还支持用户定义函数(UDF)。通过自定义函数,可以扩展 MySQL 的功能,处理一些复杂的业务需求。

自定义函数的创建语法

CREATE FUNCTION function_name (parameters)
RETURNS data_type
DETERMINISTIC
BEGIN
    -- 函数体
    RETURN value;
END;

📌 示例

创建一个返回两个数相加的自定义函数:

CREATE FUNCTION add_two_numbers (a INT, b INT)
RETURNS INT
DETERMINISTIC
BEGIN
    RETURN a + b;
END;

调用该函数:

SELECT add_two_numbers(5, 3);
-- 输出:8


函数使用示例

  1. 字符串连接
SELECT CONCAT('Hello', ' ', 'World') AS greeting;
-- 输出:Hello World

  1. 计算员工的平均工资
SELECT AVG(salary) AS average_salary FROM employees;
-- 输出:5000.50

  1. 获取当前时间并格式化
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_date;
-- 输出:2025-04-03 10:35:12

  1. 使用 CASE 语句进行条件判断
SELECT name,
    CASE
        WHEN salary > 5000 THEN 'High Salary'
        WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium Salary'
        ELSE 'Low Salary'
    END AS salary_category
FROM employees;


参考资料


MySQL 提供了丰富的内建函数,能够帮助开发者完成各种数据操作。了解和掌握这些函数,将大大提高数据查询和处理的效率。在实际开发中,可以根据具体需求选择合适的函数来处理字符串、数值、日期等数据类型。