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);,返回加密后的字符串。
- 使用场景:对用户密码进行加密存储,保障数据安全。