面试题:在 MySQL 中,你使用过哪些函数?

作为开发者,我在 MySQL 中经常使用以下各类函数:

一、字符串函数

  1. 基础处理函数
    • CONCAT(str1, str2,...) – 字符串连接
    • SUBSTRING(str, pos, len) – 提取子串
    • TRIM([BOTH|LEADING|TRAILING] trim_str FROM str) – 去除空格/指定字符
    • REPLACE(str, from_str, to_str) – 字符串替换
  2. 格式化函数
    • UPPER()/LOWER() – 大小写转换
    • LPAD()/RPAD() – 左右填充
    • FORMAT(x, d) – 数字格式化

二、数值函数

  1. 计算函数
    • ROUND(x, d) – 四舍五入
    • CEIL()/FLOOR() – 向上/向下取整
    • ABS() – 绝对值
    • MOD() – 取模
  2. 数学函数
    • RAND() – 随机数
    • POW(x, y) – 幂运算
    • SQRT() – 平方根
    • SIN()/COS() – 三角函数

三、日期时间函数

  1. 获取时间
    • NOW()/CURDATE()/CURTIME() – 当前日期时间
    • SYSDATE() – 系统时间
  2. 计算函数
    • DATE_ADD(date, INTERVAL expr unit) – 日期加减
    • DATEDIFF(date1, date2) – 日期差
    • TIMESTAMPDIFF(unit, start, end) – 时间差
  3. 格式化函数
    • DATE_FORMAT(date, format) – 日期格式化
    • STR_TO_DATE(str, format) – 字符串转日期

四、聚合函数

  • COUNT()/SUM()/AVG()/MIN()/MAX()
  • GROUP_CONCAT() – 分组连接字符串
  • STDDEV()/VARIANCE() – 统计函数

五、条件函数

  1. 逻辑判断
    • IF(expr, true_val, false_val)
    • CASE WHEN...THEN...ELSE...END
  2. 空值处理
    • 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() – 修改JSON
  • JSON_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
喜欢就支持一下吧
点赞6 分享