MySQL内置了大量实用的函数,覆盖数据处理、计算、格式转换等多个场景,合理使用这些函数可以大幅简化SQL语句的编写,提升操作效率。下面分类介绍常用的MySQL函数及使用方法。
字符串函数
字符串函数主要用于处理文本类型的数据,以下是常用的字符串函数:
- CONCAT(str1, str2, ...):拼接多个字符串,返回拼接后的结果。
- LENGTH(str):返回字符串的字节长度,注意中文在不同字符集下长度不同。
- UPPER(str) / LOWER(str):将字符串转换为全大写或全小写。
- TRIM(str):去除字符串两端的空格。
- SUBSTRING(str, start, length):截取字符串,start从1开始计数。
以下是字符串函数的使用示例:
-- 拼接字符串
SELECT CONCAT('Hello', ' ', 'MySQL') AS result; -- 返回 Hello MySQL
-- 获取字符串长度
SELECT LENGTH('测试') AS len; -- utf8mb4字符集下返回6
-- 字符串大小写转换
SELECT UPPER('mysql') AS upper_str, LOWER('MYSQL') AS lower_str; -- 返回 MYSQL 和 mysql
-- 去除空格
SELECT TRIM(' test ') AS trimmed_str; -- 返回 test
-- 截取字符串
SELECT SUBSTRING('HelloWorld', 1, 5) AS sub_str; -- 返回 Hello
数值函数
数值函数用于处理数值类型的计算,常用的函数如下:
- ABS(num):返回数值的绝对值。
- ROUND(num, decimals):对数值进行四舍五入,decimals指定保留的小数位数。
- CEIL(num) / FLOOR(num):向上取整和向下取整。
- MOD(num1, num2):返回num1除以num2的余数。
- RAND():返回0到1之间的随机浮点数。
数值函数使用示例:
-- 绝对值 SELECT ABS(-10) AS abs_val; -- 返回10 -- 四舍五入 SELECT ROUND(3.1415, 2) AS rounded; -- 返回3.14 -- 取整 SELECT CEIL(3.2) AS ceil_val, FLOOR(3.8) AS floor_val; -- 返回4和3 -- 取余 SELECT MOD(10, 3) AS mod_val; -- 返回1 -- 随机数 SELECT RAND() AS random_num; -- 返回0到1之间的随机值
日期时间函数
日期时间函数用于处理日期和时间类型的数据,常用的函数包括:
- NOW():返回当前的日期和时间。
- CURDATE() / CURTIME():分别返回当前日期和当前时间。
- DATE_ADD(date, INTERVAL expr unit):对日期进行加法运算。
- DATEDIFF(date1, date2):返回两个日期之间的天数差。
- DATE_FORMAT(date, format):按照指定格式格式化日期。
日期时间函数使用示例:
-- 获取当前日期时间
SELECT NOW() AS current_datetime, CURDATE() AS current_date, CURTIME() AS current_time;
-- 日期加法
SELECT DATE_ADD('2024-01-01', INTERVAL 7 DAY) AS new_date; -- 返回2024-01-08
-- 日期差
SELECT DATEDIFF('2024-01-10', '2024-01-01') AS day_diff; -- 返回9
-- 日期格式化
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s') AS formatted_date;
聚合函数
聚合函数用于对一组数据进行统计计算,通常和GROUP BY子句配合使用:
- COUNT(expr):统计行数,COUNT(*)统计所有行,COUNT(列名)忽略NULL值。
- SUM(expr):计算数值列的总和。
- AVG(expr):计算数值列的平均值。
- MAX(expr) / MIN(expr):返回列的最大值和最小值。
假设存在用户表user,结构如下:
| id | username | age | score |
|---|---|---|---|
| 1 | 张三 | 20 | 85 |
| 2 | 李四 | 22 | 90 |
| 3 | 王五 | 20 | 78 |
聚合函数使用示例:
-- 统计用户总数 SELECT COUNT(*) AS total_user FROM user; -- 计算总分数 SELECT SUM(score) AS total_score FROM user; -- 计算平均分数 SELECT AVG(score) AS avg_score FROM user; -- 获取最高分和最低分 SELECT MAX(score) AS max_score, MIN(score) AS min_score FROM user; -- 按年龄分组统计人数 SELECT age, COUNT(*) AS age_count FROM user GROUP BY age;
条件判断函数
条件判断函数可以根据条件返回不同的结果,常用的有:
- IF(condition, true_val, false_val):如果条件成立返回true_val,否则返回false_val。
- CASE WHEN:多条件判断,类似编程语言中的switch-case结构。
条件判断函数使用示例:
-- IF函数使用
SELECT username, score, IF(score >= 80, '及格', '不及格') AS result FROM user;
-- CASE WHEN使用
SELECT username, score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS level
FROM user;