作为开发者,我在 MySQL 中经常使用以下各类函数:
一、字符串函数
- 基础处理函数:
CONCAT(str1, str2,...)– 字符串连接SUBSTRING(str, pos, len)– 提取子串TRIM([BOTH|LEADING|TRAILING] trim_str FROM str)– 去除空格/指定字符REPLACE(str, from_str, to_str)– 字符串替换
- 格式化函数:
UPPER()/LOWER()– 大小写转换LPAD()/RPAD()– 左右填充FORMAT(x, d)– 数字格式化
二、数值函数
- 计算函数:
ROUND(x, d)– 四舍五入CEIL()/FLOOR()– 向上/向下取整ABS()– 绝对值MOD()– 取模
- 数学函数:
RAND()– 随机数POW(x, y)– 幂运算SQRT()– 平方根SIN()/COS()– 三角函数
三、日期时间函数
- 获取时间:
NOW()/CURDATE()/CURTIME()– 当前日期时间SYSDATE()– 系统时间
- 计算函数:
DATE_ADD(date, INTERVAL expr unit)– 日期加减DATEDIFF(date1, date2)– 日期差TIMESTAMPDIFF(unit, start, end)– 时间差
- 格式化函数:
DATE_FORMAT(date, format)– 日期格式化STR_TO_DATE(str, format)– 字符串转日期
四、聚合函数
COUNT()/SUM()/AVG()/MIN()/MAX()GROUP_CONCAT()– 分组连接字符串STDDEV()/VARIANCE()– 统计函数
五、条件函数
- 逻辑判断:
IF(expr, true_val, false_val)CASE WHEN...THEN...ELSE...END
- 空值处理:
IFNULL(expr1, expr2)COALESCE(expr1, expr2,...)
六、窗口函数(MySQL 8.0+)
ROW_NUMBER()/RANK()/DENSE_RANK()LEAD()/LAG()– 前后行访问FIRST_VALUE()/LAST_VALUE()
七、JSON 函数(MySQL 5.7+)
JSON_EXTRACT()/->– 提取JSON数据JSON_SET()/JSON_REMOVE()– 修改JSONJSON_CONTAINS()– JSON搜索
实际应用示例
-- 字符串处理
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;
-- 日期计算
SELECT name, DATEDIFF(NOW(), hire_date)/365 AS years_employed
FROM employees;
-- 条件判断
SELECT product_name,
CASE
WHEN price > 1000 THEN '高端'
WHEN price > 500 THEN '中端'
ELSE '入门'
END AS price_level
FROM products;
-- 窗口函数
SELECT department, salary,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dept_rank
FROM employees;
这些函数在实际开发中极大提高了数据处理效率和灵活性,特别是在报表生成、数据分析等场景下。根据不同的MySQL版本,函数支持可能有所差异,新版本通常会引入更多强大函数。
THE END


