MySQL常用函数
在数据库中,函数是一种能够接收参数并返回单个值的数据库对象。函数可以在 SQL 查询中用于执行特定的计算、转换数据或执行其他操作。数据库系统通常提供了许多内置函数,同时也允许用户创建自定义函数以满足特定需求。这里就只对一些常用的内置函数进行一下简单的介绍:
| 函数名称 | 描述 | 示例 |
|---|---|---|
CONCAT() |
将多个字符串连接成一个字符串。 |
CONCAT('Hello', ' ', 'World') 返回 'Hello World'
|
UPPER() |
将字符串转换为大写。 |
UPPER('hello') 返回 'HELLO'
|
LOWER() |
将字符串转换为小写。 |
LOWER('WORLD') 返回 'world'
|
LENGTH() |
返回字符串的字符数。 |
LENGTH('Hello') 返回 5
|
SUBSTRING() |
返回字符串的子串。 |
SUBSTRING('Hello World', 7, 5) 返回 'World'
|
ROUND() |
对数字进行四舍五入。 |
ROUND(3.14159, 2) 返回 3.14
|
ABS() |
返回数字的绝对值。 |
ABS(-10) 返回 10
|
CEILING() |
返回大于或等于指定数字的最小整数值。 |
CEILING(3.14) 返回 4
|
POWER() |
返回指定数字的指定次幂。 |
POWER(2, 3) 返回 8
|
DATE_FORMAT() |
将日期格式化为指定的字符串格式。 |
DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') 返回当前日期和时间的格式化字符串 |
DATE_ADD() |
在给定日期上添加指定的时间间隔。 |
DATE_ADD('2022-01-01', INTERVAL 1 DAY) 返回 '2022-01-02'
|
DATEDIFF() |
返回两个日期之间的天数差。 |
DATEDIFF('2022-01-01', '2022-01-05') 返回 -4
|
NOW() |
返回当前日期和时间。 |
NOW() 返回当前日期和时间的值 |
IF() |
如果条件成立,则返回一个值,否则返回另一个值。 |
IF(10 > 5, 'true', 'false') 返回 'true' 或 'false'
|
CASE |
用于执行多条件逻辑,类似于编程语言中的 switch 语句。 |
CASE WHEN score >= 90 THEN 'A' ELSE 'B' END 根据分数等级返回对应的等级 |
AVG() |
返回数值列的平均值。 |
AVG(sales) 返回销售额的平均值 |
SUM() |
返回数值列的总和。 |
SUM(quantity) 返回数量的总和 |
MAX() |
返回数值列的最大值。 |
MAX(price) 返回最高的价格 |
MIN() |
返回数值列的最小值。 |
MIN(age) 返回最小的年龄 |
COUNT() |
返回行数或符合条件的行数。 |
COUNT(*) 返回行数或非空值的数量 |
ARRAY_LENGTH() |
返回数组的长度。 |
ARRAY_LENGTH([1, 2, 3, 4]) 返回 4
|
ARRAY_JOIN() |
将数组中的元素连接成一个字符串。 |
ARRAY_JOIN(['apple', 'banana', 'orange'], ', ') 返回 'apple, banana, orange'
|
USER() |
返回当前用户。 |
USER() 返回当前用户的名称 |
DATABASE() |
返回当前数据库。 |
DATABASE() 返回当前数据库的名称 |
VERSION() |
返回数据库版本。 |
VERSION() 返回当前数据库的版本号 |
假如我们有一张表,表名为 example_table,如下所示:
+----+---------------+----------------+-------------+-------------+--------------+
| id | string_column | numeric_column | date_column | bool_column | array_column |
+----+---------------+----------------+-------------+-------------+--------------+
| 1 | Apple | 10.50 | 2024-06-10 | 1 | [1, 2, 3] |
| 2 | Banana | 20.75 | 2024-06-11 | 0 | [4, 5, 6] |
| 3 | Orange | 15.00 | 2024-06-12 | 1 | [7, 8, 9] |
+----+---------------+----------------+-------------+-------------+--------------+
-
CONCAT():将
string_column和numeric_column连接起来。SELECT CONCAT(string_column, ' - $', numeric_column) AS concatenated_string FROM example_table; +---------------------+ | concatenated_string | +---------------------+ | Apple - $10.50 | | Banana - $20.75 | | Orange - $15.00 | +---------------------+ 3 rows in set (0.00 sec) -
UPPER() / LOWER():将
string_column转换为大写和小写。SELECT UPPER(string_column) AS uppercase_string, LOWER(string_column) AS lowercase_string FROM example_table; +------------------+------------------+ | uppercase_string | lowercase_string | +------------------+------------------+ | APPLE | apple | | BANANA | banana | | ORANGE | orange | +------------------+------------------+ 3 rows in set (0.00 sec) -
LENGTH():计算
string_column的长度。SELECT string_column, LENGTH(string_column) AS string_length FROM example_table; +---------------+---------------+ | string_column | string_length | +---------------+---------------+ | Apple | 5 | | Banana | 6 | | Orange | 6 | +---------------+---------------+ 3 rows in set (0.00 sec) -
ROUND():对
numeric_column进行四舍五入。SELECT numeric_column, ROUND(numeric_column) AS rounded_number FROM example_table; +----------------+----------------+ | numeric_column | rounded_number | +----------------+----------------+ | 10.50 | 11 | | 20.75 | 21 | | 15.00 | 15 | +----------------+----------------+ 3 rows in set (0.00 sec) -
CURDATE():返回当前日期。
SELECT CURDATE(); +------------+ | CURDATE() | +------------+ | 2024-06-10 | +------------+ 1 row in set (0.00 sec) -
DATE_FORMAT():格式化
date_column。SELECT date_column, DATE_FORMAT(date_column, '%W, %M %e, %Y') AS formatted_date FROM example_table; +-------------+--------------------------+ | date_column | formatted_date | +-------------+--------------------------+ | 2024-06-10 | Monday, June 10, 2024 | | 2024-06-11 | Tuesday, June 11, 2024 | | 2024-06-12 | Wednesday, June 12, 2024 | +-------------+--------------------------+ 3 rows in set (0.00 sec) -
IF():根据
bool_column返回不同的值。SELECT bool_column, IF(bool_column, 'Yes', 'No') AS result FROM example_table; +-------------+--------+ | bool_column | result | +-------------+--------+ | 1 | Yes | | 0 | No | | 1 | Yes | +-------------+--------+ 3 rows in set (0.00 sec) -
CASE WHEN:根据条件返回不同的值。
SELECT numeric_column, CASE WHEN numeric_column > 15 THEN 'High' WHEN numeric_column > 10 THEN 'Medium' ELSE 'Low' END AS value_category FROM example_table; +----------------+----------------+ | numeric_column | value_category | +----------------+----------------+ | 10.50 | Medium | | 20.75 | High | | 15.00 | Medium | +----------------+----------------+ 3 rows in set (0.00 sec)
由于函数众多,我们将不再逐一列举。