以下是将我之前的回答转换为 Markdown 格式后的结果:
MySQL 常用函数
在 MySQL 中,有许多非常有用的函数,这些函数可以用于处理字符串、日期、数值及其他数据类型的操作。以下是一些常用且非常有用的 MySQL 函数:
字符串函数
-
CONCAT:
- 用于将两个或多个字符串连接在一起。
-
SELECT CONCAT('Hello', ' ', 'World') AS Greeting;
-
SUBSTRING (或 SUBSTR):
- 从字符串中提取子字符串。
-
SELECT SUBSTRING('Hello World', 7, 5) AS ExtractedString; -- 输出: World
-
LENGTH:
- 返回字符串的长度(字符数)。
-
SELECT LENGTH('Hello') AS StringLength; -- 输出: 5
-
REPLACE:
- 将字符串中的某部分替换为另一部分。
-
SELECT REPLACE('Hello World', 'World', 'MySQL') AS ReplacedString; -- 输出: Hello MySQL
-
TRIM (或 LTRIM, RTRIM):
- 用于去除字符串开头或结尾的空格字符。
-
SELECT TRIM(' Hello World ') AS TrimmedString; -- 输出: Hello World
日期函数
-
NOW:
- 返回当前的日期和时间。
-
SELECT NOW() AS CurrentDateTime;
-
CURDATE:
- 返回当前的日期(不包括时间)。
-
SELECT CURDATE() AS CurrentDate;
-
DATE_FORMAT:
- 用于以特定格式显示日期/时间。
-
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS FormattedDateTime;
-
DATEDIFF:
- 计算两个日期之间的天数。
-
SELECT DATEDIFF('2023-10-01', '2023-09-25') AS DaysDifference; -- 输出: 6
-
TIMESTAMPDIFF:
- 返回两个日期或时间表达式之间的差值。
-
SELECT TIMESTAMPDIFF(MINUTE, '2023-10-01 12:00:00', '2023-10-01 12:30:00') AS MinuteDifference; -- 输出: 30
数值函数
-
ROUND:
- 用于四舍五入数值。
-
SELECT ROUND(123.456, 2) AS RoundedNumber; -- 输出: 123.46
-
CEIL (或 CEILING):
- 返回大于或等于指定数值的最小整数。
-
SELECT CEIL(123.456) AS CeilNumber; -- 输出: 124
-
FLOOR:
- 返回小于或等于指定数值的最大整数。
-
SELECT FLOOR(123.456) AS FloorNumber; -- 输出: 123
-
ABS:
- 返回数字的绝对值。
-
SELECT ABS(-123.45) AS AbsoluteValue; -- 输出: 123.45
-
MOD:
- 取模运算,返回除法的余数。
-
SELECT MOD(10, 3) AS Remainder; -- 输出: 1
聚合函数
-
COUNT:
- 返回查询结果的行数。
-
SELECT COUNT(*) AS TotalCount FROM Users;
-
SUM:
- 返回数值列的总和。
-
SELECT SUM(amount) AS TotalAmount FROM Transactions;
-
AVG:
- 返回数值列的平均值。
-
SELECT AVG(score) AS AverageScore FROM Exams;
-
MAX:
- 返回列中的最大值。
-
SELECT MAX(salary) AS MaxSalary FROM Employees;
-
MIN:
- 返回列中的最小值。
-
SELECT MIN(price) AS MinPrice FROM Products;
JSON 函数(MySQL 5.7 及更高版本)
-
JSON_EXTRACT:
- 从 JSON 文档中提取数据。
-
SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name') AS Name; -- 输出: "John"
-
JSON_ARRAYAGG:
- 创建一个 JSON 数组,包含一组值。
-
SELECT JSON_ARRAYAGG(name) AS NamesArray FROM Employees;
-
JSON_OBJECT:
- 创建一个 JSON 对象,包含一组键值对。
-
SELECT JSON_OBJECT('name', name, 'age', age) AS EmployeeJson FROM Employees;
-
JSON_CONTAINS:
- 检查 JSON 文档中是否包含特定值。
-
SELECT JSON_CONTAINS('{"name": "John", "age": 30}', '30', '$.age') AS ContainsAge; -- 输出: 1
这些函数只是 MySQL 提供的众多函数中的一部分。在编写 SQL 查询时,使用这些函数可以大大提高数据处理的灵活性和效率。根据具体的业务场景和数据处理需求,可以选择合适的函数进行使用。