FORMA

常用函数

MySQL 常用函数(基础)

MySQL 提供了丰富的内置函数,用于处理字符串、数值、日期和时间以及条件逻辑。下面分类介绍最常用的基础函数。

一、字符串函数

函数说明示例结果
CONCAT(str1, str2, ...)拼接多个字符串SELECT CONCAT('Hello', ' ', 'World');Hello World
LENGTH(str)返回字符串的字节长度(受字符集影响)SELECT LENGTH('你好');(UTF-8 下)6
CHAR_LENGTH(str)返回字符串的字符长度SELECT CHAR_LENGTH('你好');2
UPPER(str) / LOWER(str)转为大写 / 小写SELECT UPPER('mysql');MYSQL
SUBSTRING(str, pos, len)pos 位置开始截取 len 个字符(pos 从 1 开始)SELECT SUBSTRING('Hello World', 7, 5);World

二、数值函数

函数说明示例结果
ROUND(num, d)四舍五入,保留 d 位小数(d 省略则为 0)SELECT ROUND(12.345, 2);12.35
FLOOR(num)向下取整(返回不大于 num 的最大整数)SELECT FLOOR(12.99);12
CEIL(num) / CEILING(num)向上取整(返回不小于 num 的最小整数)SELECT CEIL(12.01);13
RAND()返回 [0, 1) 的随机浮点数SELECT RAND();例如 0.123456

三、日期函数

函数说明示例结果(假设当前时间 2025-04-25 10:30:00)
NOW()当前日期和时间SELECT NOW();2025-04-25 10:30:00
CURDATE()当前日期SELECT CURDATE();2025-04-25
CURTIME()当前时间SELECT CURTIME();10:30:00
DATE_ADD(date, INTERVAL value unit)日期加法SELECT DATE_ADD('2025-04-25', INTERVAL 3 DAY);2025-04-28
DATEDIFF(date1, date2)返回两个日期相差的天数(date1 - date2SELECT DATEDIFF('2025-04-30', '2025-04-25');5

四、条件函数

函数说明示例结果
IF(condition, true_val, false_val)条件判断,类似于三元运算符SELECT IF(1 > 2, '是', '否');
CASE ... WHEN ... THEN ... END多分支条件,类似 switch-caseSELECT CASE 2 WHEN 1 THEN '一' WHEN 2 THEN '二' ELSE '其他' END;

CASE 两种用法

  1. 简单 CASECASE value WHEN value1 THEN result1 WHEN value2 THEN result2 ... END
  2. 搜索 CASECASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... END
sql
-- 搜索 CASE 示例
SELECT
    name,
    CASE
        WHEN age < 18 THEN '未成年'
        WHEN age BETWEEN 18 AND 65 THEN '成年'
        ELSE '老年'
    END AS age_group
FROM users;

五、综合示例

sql
-- 拼接姓名和年龄,并判断是否成年
SELECT
    CONCAT(name, ' (', age, ')') AS info,
    IF(age >= 18, '成年', '未成年') AS status
FROM students;

-- 计算订单创建时间距离今天的天数,并分类
SELECT
    order_id,
    DATEDIFF(CURDATE(), order_date) AS days_ago,
    CASE
        WHEN DATEDIFF(CURDATE(), order_date) <= 7 THEN '近7天'
        WHEN DATEDIFF(CURDATE(), order_date) <= 30 THEN '30天内'
        ELSE '更早'
    END AS category
FROM orders;

掌握这些基础函数可以大大简化 SQL 查询中的数据处理逻辑,避免在应用层进行额外计算。

参考文献

资料说明
MySQL 8.0 手册官方
数据存储导读学习路径

Series

mysql

10 / 11