📌 目录
- MySQL 内建函数概述
- 常用的 MySQL 函数类型
- 2.1 字符串函数
- 2.2 数学函数
- 2.3 日期和时间函数
- 2.4 聚合函数
- 2.5 控制流函数
- MySQL 自定义函数
- 函数使用示例
- 参考资料
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
函数使用示例
- 字符串连接:
SELECT CONCAT('Hello', ' ', 'World') AS greeting;
-- 输出:Hello World
- 计算员工的平均工资:
SELECT AVG(salary) AS average_salary FROM employees;
-- 输出:5000.50
- 获取当前时间并格式化:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_date;
-- 输出:2025-04-03 10:35:12
- 使用
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 提供了丰富的内建函数,能够帮助开发者完成各种数据操作。了解和掌握这些函数,将大大提高数据查询和处理的效率。在实际开发中,可以根据具体需求选择合适的函数来处理字符串、数值、日期等数据类型。
发表回复