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)
由于函数众多,我们将不再逐一列举。