
1. MySQL函数基础概念MySQL函数是数据库系统中预先定义好的一系列功能模块它们可以接收参数、执行特定操作并返回结果。在实际开发中函数能极大简化SQL语句的复杂度提高数据处理效率。MySQL函数主要分为以下几类字符串函数处理文本数据数值函数数学运算和数值处理日期时间函数日期和时间操作流程控制函数条件判断和分支逻辑系统信息函数获取数据库和系统信息聚合函数对多行数据进行统计计算提示MySQL函数不区分大小写但建议统一使用大写形式以提高代码可读性。2. 字符串处理函数详解2.1 常用字符串函数CONCAT() 是最基础的字符串连接函数SELECT CONCAT(Hello, , World); -- 输出Hello WorldSUBSTRING() 用于提取子字符串SELECT SUBSTRING(MySQL Functions, 7, 8); -- 从第7个字符开始取8个字符输出FunctionREPLACE() 实现字符串替换SELECT REPLACE(I use Oracle, Oracle, MySQL); -- 输出I use MySQL2.2 字符串格式化与转换FORMAT() 函数对数字进行格式化SELECT FORMAT(1234567.8912, 2); -- 输出1,234,567.89大小写转换函数SELECT UPPER(mysql), LOWER(MySQL); -- 输出MYSQL, mysql2.3 字符串搜索与定位LOCATE() 查找子串位置SELECT LOCATE(SQL, MySQL SQL); -- 输出3LIKE 运算符配合通配符SELECT * FROM products WHERE name LIKE %Pro%;3. 数值计算函数应用3.1 基本数学运算ROUND() 四舍五入SELECT ROUND(3.14159, 2); -- 输出3.14CEIL() 和 FLOOR()SELECT CEIL(3.2), FLOOR(3.9); -- 输出4, 33.2 随机数与幂运算RAND() 生成随机数SELECT RAND(); -- 输出0到1之间的随机浮点数POWER() 幂运算SELECT POWER(2, 10); -- 计算2的10次方输出10243.3 聚合计算函数SUM() 求和SELECT SUM(salary) FROM employees;AVG() 求平均值SELECT AVG(score) FROM student_results;4. 日期时间处理技巧4.1 日期获取与格式化NOW() 获取当前日期时间SELECT NOW(); -- 输出2023-08-20 14:30:45DATE_FORMAT() 格式化日期SELECT DATE_FORMAT(NOW(), %Y年%m月%d日 %H时%i分); -- 输出2023年08月20日 14时30分4.2 日期计算DATE_ADD() 日期加减SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH); -- 加1个月DATEDIFF() 计算日期差SELECT DATEDIFF(2023-12-31, 2023-08-20); -- 输出133天4.3 时间戳处理UNIX_TIMESTAMP() 转换SELECT UNIX_TIMESTAMP(2023-08-20 00:00:00); -- 输出时间戳FROM_UNIXTIME() 反向转换SELECT FROM_UNIXTIME(1692489600); -- 输出2023-08-20 00:00:005. 条件判断与流程控制5.1 IF函数基本条件判断SELECT IF(salary 10000, 高薪, 普通) FROM employees;5.2 CASE表达式多条件分支SELECT CASE WHEN score 90 THEN 优秀 WHEN score 80 THEN 良好 WHEN score 60 THEN 及格 ELSE 不及格 END AS grade FROM student_scores;5.3 NULL值处理IFNULL() 处理空值SELECT IFNULL(bonus, 0) FROM salaries; -- 奖金为NULL时显示0COALESCE() 返回第一个非NULL值SELECT COALESCE(mobile, phone, 无联系方式) FROM contacts;6. 高级函数应用场景6.1 窗口函数(MySQL 8.0)ROW_NUMBER() 生成序号SELECT ROW_NUMBER() OVER(ORDER BY sales DESC) AS rank, product_name, sales FROM product_sales;6.2 JSON处理函数JSON_OBJECT() 创建JSON对象SELECT JSON_OBJECT(name, name, age, age) FROM users;JSON_EXTRACT() 提取JSON值SELECT JSON_EXTRACT(profile, $.address.city) FROM customers;6.3 自定义函数示例创建简单自定义函数DELIMITER // CREATE FUNCTION calculate_tax(salary DECIMAL(10,2)) RETURNS DECIMAL(10,2) DETERMINISTIC BEGIN DECLARE tax DECIMAL(10,2); IF salary 50000 THEN SET tax salary * 0.2; ELSE SET tax salary * 0.1; END IF; RETURN tax; END // DELIMITER ;7. 性能优化与最佳实践7.1 函数使用注意事项避免在WHERE条件中对列使用函数会导致索引失效复杂函数计算考虑在应用层处理大量数据处理时注意函数执行开销7.2 常见问题排查函数返回NULL的可能原因参数为NULL且函数不处理NULL值参数类型不匹配计算错误如除以零日期函数时区问题SET time_zone 08:00; -- 确保时区设置正确7.3 实用技巧使用函数生成测试数据INSERT INTO test_data SELECT CONCAT(user, FLOOR(RAND()*1000)), DATE_ADD(2023-01-01, INTERVAL FLOOR(RAND()*365) DAY) FROM information_schema.tables LIMIT 1000;动态SQL生成SET sql CONCAT(SELECT * FROM , table_name, WHERE create_date , start_date, ); PREPARE stmt FROM sql; EXECUTE stmt;在实际项目中合理使用MySQL函数可以显著提高开发效率和数据处理能力。建议根据具体业务场景选择最适合的函数组合并注意性能影响。对于复杂逻辑可以考虑使用存储过程封装多个函数调用。