MySQL中的函数丰富多样,可分为数值函数、字符串函数、日期和时间函数、条件判断函数、聚合函数、加密函数等版块,以下是详细介绍:
数值函数
- 常见函数:
ABS(x)
:返回x
的绝对值,如SELECT ABS(-5);
,结果为5
。CEIL(x)
:返回大于或等于x
的最小整数,如SELECT CEIL(3.14);
,结果为4
。FLOOR(x)
:返回小于或等于x
的最大整数,如SELECT FLOOR(3.14);
,结果为3
。ROUND(x,d)
:对x
进行四舍五入,d
表示保留的小数位数,如SELECT ROUND(3.14159, 2);
,结果为3.14
。RAND()
:返回一个随机数,范围在0到1之间。若要获取指定范围内的随机整数,可结合其他函数,如SELECT FLOOR(RAND() * 10 + 1);
,获取1到10之间的随机整数。
- 使用场景:在数据计算、生成随机数等场景中常用,如计算商品价格的折扣优惠金额(涉及数值运算)、生成验证码(涉及随机数)等。
字符串函数
- 常见函数:
CONCAT(s1, s2,...)
:将多个字符串连接成一个字符串,如SELECT CONCAT('Hello', ', ', 'World');
,结果为Hello, World
。LENGTH(s)
:返回字符串s
的长度(以字节为单位),如SELECT LENGTH('中文');
,结果为6
,因为每个汉字在UTF-8编码下占3个字节。SUBSTRING(s, pos[, len])
:从字符串s
的pos
位置开始截取子字符串,len
为可选参数,表示截取的长度,如SELECT SUBSTRING('Hello World', 7);
,结果为World
。UPPER(s)
:将字符串s
中的所有字符转换为大写,如SELECT UPPER('hello');
,结果为HELLO
;LOWER(s)
则相反,将字符串转换为小写。TRIM(s)
:去除字符串s
两端的空格,LTRIM(s)
去除左侧空格,RTRIM(s)
去除右侧空格。
- 使用场景:处理用户输入数据(如去除空格、转换大小写)、拼接动态SQL语句、从长文本中提取关键信息等。
日期和时间函数
- 常见函数:
NOW()
:返回当前的日期和时间,如SELECT NOW();
,结果类似2024-10-15 14:30:00
。CURDATE()
:返回当前的日期,如SELECT CURDATE();
,结果类似2024-10-15
;CURTIME()
返回当前的时间。DATE_FORMAT(date, format)
:按照指定的format
格式格式化日期,如SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
,可将当前日期时间格式化为2024-10-15 14:30:00
的形式。DATEDIFF(date1, date2)
:计算两个日期之间的天数差,如SELECT DATEDIFF('2024-10-15', '2024-10-10');
,结果为5
。
- 使用场景:记录数据的创建或更新时间、计算订单的处理时长、统计特定时间段内的业务数据等。
条件判断函数
- 常见函数:
IF(expr, v1, v2)
:如果expr
为真,返回v1
;否则返回v2
,如SELECT IF(10 > 5, '大于', '小于');
,结果为大于
。CASE WHEN expr1 THEN v1 WHEN expr2 THEN v2 ELSE v3 END
:多条件判断,根据不同的条件返回不同的值,如:
SELECT
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM student;
- 使用场景:根据不同条件对数据进行分类、计算不同条件下的优惠金额、判断用户权限等。
聚合函数
- 常见函数:
COUNT(expr)
:统计符合条件的行数,如SELECT COUNT(*) FROM user;
,统计user
表中的总记录数。SUM(expr)
:计算expr
列的总和,如SELECT SUM(price) FROM product;
,计算product
表中商品价格的总和。AVG(expr)
:计算expr
列的平均值,如SELECT AVG(age) FROM employee;
,计算employee
表中员工年龄的平均值。MAX(expr)
:返回expr
列的最大值,MIN(expr)
返回最小值,如SELECT MAX(salary) FROM company;
,获取company
表中员工工资的最大值。
- 使用场景:统计报表数据(如统计销售总额、平均订单金额)、分析数据的集中趋势和离散程度等。
加密函数
- 常见函数:
PASSWORD(s)
:对字符串s
进行加密,不过从MySQL 5.7.6开始,PASSWORD()
函数已被弃用,推荐使用SHA2()
等函数。SHA2(s, hash_length)
:计算字符串s
的SHA2加密值,hash_length
通常为256或512,如SELECT SHA2('password', 256);
,返回加密后的字符串。
- 使用场景:对用户密码进行加密存储,保障数据安全。