1. 字符串函数
- CONCAT(str1, str2, …)
- 功能:用于将多个字符串连接成一个字符串。
- 示例:
SELECT CONCAT('Hello', ' ', 'World');,结果为 Hello World。
- SUBSTRING(str, pos, len)
- 功能:从字符串
str 的指定位置 pos 开始,截取长度为 len 的子字符串。如果省略 len,则截取从 pos 到字符串末尾的部分。 - 示例:
SELECT SUBSTRING('HelloWorld', 2, 3);,结果为 ell。
- LENGTH(str)
- 功能:返回字符串
str 的长度(以字节为单位)。对于多字节字符,每个字符可能占用多个字节。 - 示例:
SELECT LENGTH('Hello');,结果为 5。
- UPPER(str) 和 LOWER(str)
- 功能:
UPPER(str) 将字符串 str 中的所有字母转换为大写;LOWER(str) 将字符串 str 中的所有字母转换为小写。 - 示例:
SELECT UPPER('hello'); 结果为 HELLO;SELECT LOWER('WORLD'); 结果为 world。
- TRIM([remstr FROM] str)
- 功能:去除字符串
str 首尾的指定字符 remstr,如果不指定 remstr,则默认去除空格。 - 示例:
SELECT TRIM(' Hello '); 结果为 Hello;SELECT TRIM('x' FROM 'xxxHelloxxx'); 结果为 Hello。
2. 数值函数
- ABS(x)
- 功能:返回数值
x 的绝对值。 - 示例:
SELECT ABS(-5);,结果为 5。
- ROUND(x, d)
- 功能:将数值
x 四舍五入到指定的小数位数 d。如果 d 为 0,则返回整数。 - 示例:
SELECT ROUND(3.14159, 2);,结果为 3.14。
- CEIL(x) 和 FLOOR(x)
- 功能:
CEIL(x) 返回大于或等于 x 的最小整数;FLOOR(x) 返回小于或等于 x 的最大整数。 - 示例:
SELECT CEIL(3.2); 结果为 4;SELECT FLOOR(3.8); 结果为 3。
- MOD(x, y)
- 功能:返回
x 除以 y 的余数。 - 示例:
SELECT MOD(10, 3);,结果为 1。
3. 日期和时间函数
- CURDATE() 和 CURTIME()
- 功能:
CURDATE() 返回当前日期;CURTIME() 返回当前时间。 - 示例:
SELECT CURDATE(); 会返回当前日期,如 2024-10-01;SELECT CURTIME(); 会返回当前时间,如 14:30:00。
- NOW()
- 功能:返回当前日期和时间。
- 示例:
SELECT NOW(); 可能返回 2024-10-01 14:30:00。
- DATE_FORMAT(date, format)
- 功能:将日期
date 按照指定的格式 format 进行格式化。 - 示例:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); 会将当前日期时间格式化为 2024-10-01 14:30:00 这种形式。
- DATEDIFF(date1, date2)
- 功能:返回两个日期之间的天数差,
date1 - date2。 - 示例:
SELECT DATEDIFF('2024-10-05', '2024-10-01');,结果为 4。
4. 聚合函数
- COUNT(expr)
- 功能:返回满足条件的记录行数。如果
expr 为 *,则统计所有记录;如果指定列名,则统计该列非 NULL 值的记录数。 - 示例:
SELECT COUNT(*) FROM employees; 统计 employees 表中的记录总数。
- SUM(expr)
- 功能:返回指定列值的总和,通常用于数值类型的列。
- 示例:
SELECT SUM(salary) FROM employees; 计算 employees 表中所有员工的工资总和。
- AVG(expr)
- 功能:返回指定列值的平均值,用于数值类型的列。
- 示例:
SELECT AVG(salary) FROM employees; 计算 employees 表中员工的平均工资。
- MAX(expr) 和 MIN(expr)
- 功能:
MAX(expr) 返回指定列中的最大值;MIN(expr) 返回指定列中的最小值。可以用于数值、日期等可比较类型的列。 - 示例:
SELECT MAX(salary) FROM employees; 找出 employees 表中工资的最大值;SELECT MIN(hire_date) FROM employees; 找出最早的入职日期。
5. 条件判断函数
- IF(expr, val1, val2)
- 功能:如果表达式
expr 为真,则返回 val1;否则返回 val2。 - 示例:
SELECT IF(5 > 3, 'Yes', 'No');,结果为 Yes。
- CASE WHEN … THEN … ELSE … END
- 功能:用于实现复杂的条件判断逻辑,类似于编程语言中的
switch 或 if-else 语句。 - 示例:
SELECT
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'D'
END AS grade
FROM students;
6. 加密函数
- MD5(str)
- 功能:计算字符串
str 的 MD5 哈希值,返回一个 32 位的十六进制字符串。MD5 是一种不可逆的哈希算法,常用于数据校验和密码存储(但安全性较低)。 - 示例:
SELECT MD5('password'); 会返回一个 32 位的十六进制哈希值。
- SHA1(str)
- 功能:计算字符串
str 的 SHA-1 哈希值,返回一个 40 位的十六进制字符串。SHA-1 也是一种不可逆的哈希算法,安全性比 MD5 高一些,但现在也逐渐被认为不够安全。 - 示例:
SELECT SHA1('password'); 会返回对应的 40 位哈希值。