MySQL 提供了丰富的内置函数,供开发者在 SQL 查询中使用。MySQL 函数可以分为不同类型,如字符串函数、数学函数、日期和时间函数、聚合函数等。以下是一些常见的 MySQL 函数及其实例,帮助你深入理解如何使用它们。
1. 字符串函数
1.1 CONCAT()
CONCAT() 函数用于连接多个字符串。
SELECT CONCAT('Hello', ' ', 'World') AS greeting;
输出:
greeting
----------------
Hello World
1.2 LENGTH()
LENGTH() 函数返回字符串的字节数。
SELECT LENGTH('Hello') AS length;
输出:
length
------
5
1.3 UPPER() / LOWER()
UPPER() 将字符串转换为大写,LOWER() 将字符串转换为小写。
SELECT UPPER('hello') AS uppercase, LOWER('HELLO') AS lowercase;
输出:
uppercase | lowercase
-----------|----------
HELLO | hello
1.4 TRIM()
TRIM() 去掉字符串两端的空格或其他字符。
SELECT TRIM(' ' FROM ' Hello ') AS trimmed;
输出:
trimmed
-------
Hello
1.5 SUBSTRING()
SUBSTRING() 函数返回字符串的子串。
SELECT SUBSTRING('Hello World', 1, 5) AS substring;
输出:
substring
----------
Hello
2. 数学函数
2.1 ROUND()
ROUND() 函数用于对数字进行四舍五入。
SELECT ROUND(123.456, 2) AS rounded_value;
输出:
rounded_value
--------------
123.46
2.2 FLOOR() 和 CEIL()
FLOOR() 返回小于或等于指定数字的最大整数,CEIL() 返回大于或等于指定数字的最小整数。
SELECT FLOOR(123.456) AS floor_value, CEIL(123.456) AS ceil_value;
输出:
floor_value | ceil_value
------------|------------
123 | 124
2.3 ABS()
ABS() 返回数字的绝对值。
SELECT ABS(-123) AS absolute_value;
输出:
absolute_value
---------------
123
2.4 MOD()
MOD() 返回两个数字相除的余数。
SELECT MOD(10, 3) AS remainder;
输出:
remainder
----------
1
3. 日期和时间函数
3.1 NOW() 和 CURDATE()
NOW() 返回当前的日期和时间,CURDATE() 返回当前的日期。
SELECT NOW() AS current_datetime, CURDATE() AS current_date;
输出:
current_datetime | current_date
------------------------|--------------
2025-02-18 10:00:00 | 2025-02-18
3.2 DATE_ADD() 和 DATE_SUB()
DATE_ADD() 用于给日期加上指定的时间间隔,DATE_SUB() 用于从日期中减去指定的时间间隔。
SELECT DATE_ADD('2025-02-18', INTERVAL 5 DAY) AS date_added,
DATE_SUB('2025-02-18', INTERVAL 5 DAY) AS date_subtracted;
输出:
date_added | date_subtracted
-----------|----------------
2025-02-23 | 2025-02-13
3.3 DATEDIFF()
DATEDIFF() 函数返回两个日期之间的天数。
SELECT DATEDIFF('2025-02-18', '2025-02-10') AS date_diff;
输出:
date_diff
----------
8
3.4 YEAR(), MONTH(), DAY()
这些函数分别提取日期的年份、月份和日期部分。
SELECT YEAR('2025-02-18') AS year,
MONTH('2025-02-18') AS month,
DAY('2025-02-18') AS day;
输出:
year | month | day
-----|-------|-----
2025 | 2 | 18
4. 聚合函数
4.1 COUNT()
COUNT() 函数返回查询结果中行的数量。
SELECT COUNT(*) AS total_employees FROM employees;
输出:
total_employees
----------------
100
4.2 SUM()
SUM() 函数返回列中所有值的总和。
SELECT SUM(salary) AS total_salary FROM employees;
输出:
total_salary
-------------
500000
4.3 AVG()
AVG() 函数返回列中所有值的平均值。
SELECT AVG(salary) AS average_salary FROM employees;
输出:
average_salary
---------------
5000
4.4 MAX() 和 MIN()
MAX() 函数返回列中的最大值,MIN() 函数返回列中的最小值。
SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees;
输出:
max_salary | min_salary
-----------|-----------
10000 | 3000
5. 条件函数
5.1 IF()
IF() 函数根据条件返回不同的值。
SELECT IF(salary > 5000, 'High', 'Low') AS salary_level
FROM employees;
5.2 CASE
CASE 是 SQL 中的条件表达式,可以用于多个条件的判断。
SELECT
CASE
WHEN salary > 8000 THEN 'High'
WHEN salary > 5000 THEN 'Medium'
ELSE 'Low'
END AS salary_level
FROM employees;
6. 类型转换函数
6.1 CAST() 和 CONVERT()
CAST() 和 CONVERT() 用于将一个数据类型转换为另一个数据类型。
SELECT CAST('123.45' AS UNSIGNED) AS cast_value,
CONVERT('123.45', SIGNED) AS convert_value;
输出:
cast_value | convert_value
-----------|--------------
123 | 123
7. 总结
- 字符串函数:如
CONCAT()、LENGTH()、UPPER()等,用于操作字符串。 - 数学函数:如
ROUND()、FLOOR()、ABS()等,用于数学计算。 - 日期和时间函数:如
NOW()、DATE_ADD()、DATEDIFF()等,用于操作日期和时间。 - 聚合函数:如
COUNT()、SUM()、AVG()等,用于聚合数据。 - 条件函数:如
IF()和CASE,用于根据条件返回不同的结果。 - 类型转换函数:如
CAST()和CONVERT(),用于类型转换。
MySQL 函数提供了强大的数据处理能力,可以在 SQL 查询中灵活地处理数据和计算,提升查询效率和可读性。