作为开发者,我在 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