MySQL 函数详细说明
目录
一、数学函数
二、字符串函数
三、日期时间函数
四、条件函数
五、聚合函数
六、自定义函数(UDF)
注意事项
MySQL 提供了丰富的内置函数,用于数据处理、计算和转换。这些函数主要分为以下几类:
一、数学函数
-
绝对值:
ABS(x)SELECT ABS(-5); -- 返回 5 -
四舍五入:
ROUND(x, d)
d为小数位数:SELECT ROUND(3.14159, 2); -- 返回 3.14 -
随机数:
RAND()
生成 $$[0,1)$$ 的随机数:SELECT RAND(); -- 如 0.7632 -
取整:
CEIL(x)(向上取整)FLOOR(x)(向下取整)
SELECT CEIL(3.2), FLOOR(3.8); -- 返回 4, 3
二、字符串函数
-
拼接:
CONCAT(str1, str2, ...)SELECT CONCAT('Hello', ' ', 'World'); -- 'Hello World' -
子串提取:
SUBSTRING(str, start, length)SELECT SUBSTRING('MySQL', 3, 3); -- 'SQL' -
长度计算:
LENGTH(str)(字节长度)CHAR_LENGTH(str)(字符长度)
SELECT LENGTH('中文'), CHAR_LENGTH('中文'); -- 6, 2 -
大小写转换:
UPPER(str)LOWER(str)
SELECT UPPER('abc'); -- 'ABC'
三、日期时间函数
-
当前时间:
NOW()(日期+时间)CURDATE()(日期)
SELECT NOW(); -- '2023-10-05 14:30:00' -
日期加减:
DATE_ADD(date, INTERVAL expr unit)SELECT DATE_ADD('2023-01-01', INTERVAL 1 MONTH); -- '2023-02-01' -
日期格式化:
DATE_FORMAT(date, format)SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日'); -- '2023年10月05日'
四、条件函数
-
IF 判断:
IF(expr, true_val, false_val)SELECT IF(score > 60, '及格', '不及格') FROM students; -
CASE 分支:
SELECT CASE WHEN score >= 90 THEN 'A'WHEN score >= 80 THEN 'B'ELSE 'C'END AS grade FROM students;
五、聚合函数
-
求和:
SUM(column)SELECT SUM(salary) FROM employees; -
平均值:
AVG(column)SELECT AVG(age) FROM users; -
计数:
COUNT(column)SELECT COUNT(*) FROM orders;
六、自定义函数(UDF)
通过 CREATE FUNCTION 扩展功能:
DELIMITER $$
CREATE FUNCTION CalculateTax(salary DECIMAL(10,2))
RETURNS DECIMAL(10,2)
BEGINRETURN salary * 0.1;
END$$
DELIMITER ;-- 调用
SELECT CalculateTax(5000); -- 返回 500
注意事项
- 函数嵌套:支持多层嵌套,如
ROUND(AVG(salary), 2) - 空值处理:多数函数遇到
NULL返回NULL - 性能优化:避免在
WHERE子句中对列使用函数(可能无法使用索引)
完整函数列表参考 MySQL 官方文档。
