mysql常用的基本函数

MySQL 提供了丰富而实用的内置函数,是进行数据查询、处理和分析的核心工具。这些函数主要分为几大类:字符串函数 (如 CONCAT, UPPER, SUBSTRING, LENGTH)用于处理文本;数值函数 (如 ROUND, ABS, MOD)执行数学运算;日期和时间函数 (如 NOW, CURDATE, DATEDIFF, DATE_ADD)方便地操作时间数据;聚合函数 (如 COUNT, SUM, AVG, MAX, MIN)用于对数据组进行统计计算;以及控制流函数 (如 IF, IFNULL, COALESCE, CASE)实现条件判断和 NULL 值处理。

1. 字符串函数 (String Functions)

用于处理文本数据。

  • CONCAT(str1, str2, ...) : 将多个字符串连接成一个。
arduino 复制代码
 SELECT CONCAT('Hello', ' ', 'World'); -- 结果: 'Hello World'
  • UPPER(str) / LOWER(str) : 将字符串转换为大写或小写。
sql 复制代码
 SELECT UPPER('hello'); -- 结果: 'HELLO'
 SELECT LOWER('WORLD'); -- 结果: 'world'
  • LENGTH(str) : 返回字符串的字节长度。
sql 复制代码
 SELECT LENGTH('abc'); -- 结果: 3
 SELECT LENGTH('你好'); -- utf8mb4下通常是6 (每个汉字3字节)
  • CHAR_LENGTH(str) : 返回字符串的字符长度。
sql 复制代码
    SELECT CHAR_LENGTH('abc'); -- 结果: 3
    SELECT CHAR_LENGTH('你好'); -- 结果: 2
  • SUBSTRING(str, pos, len) : 从字符串 str 的位置 pos (从1开始) 提取长度为 len 的子串。- pos (位置) : 指定从字符串的第几个字符 开始提取。位置从 1 开始计数。 len (长度) : 指定要提取的字符数量。
sql 复制代码
 SELECT SUBSTRING('Hello World', 7, 5); -- 结果: 'World'
 SELECT SUBSTRING('你好 我是花花无缺', 7, 5); -- 结果: '花无缺'
  • TRIM(str) : 去除字符串首尾的空格。
sql 复制代码
 SELECT TRIM('  hello  '); -- 结果: 'hello'
  • REPLACE(str, from_str, to_str) : 将 str 中的 from_str 全部替换为 to_str
arduino 复制代码
 SELECT REPLACE('Hello World', 'World', 'MySQL'); -- 结果: 'Hello MySQL'
  • LIKE : 模糊匹配。% 匹配任意字符序列,_ 匹配单个字符。
sql 复制代码
SELECT * FROM users WHERE name LIKE 'J%'; -- 名字以J开头
  • POSITION 函数用于在一个字符串中查找另一个字符串(子字符串)第一次出现的位置。语法 : POSITION(substr IN str),返回子字符串 substr 在字符串 str 中第一次出现的起始位置 (从 1 开始计数)。如果未找到,则返回 0。等价函数 : 在 MySQL 中,POSITION(substr IN str) 完全等同于 LOCATE(substr, str)
sql 复制代码
-- 查找 '_' 在 'mod_854n' 中的位置
SELECT POSITION('_' IN 'mod_854n'); -- 结果: 4

例:取'mod_854n_1',第一个'_'后的字符串

sql 复制代码
SELECT SUBSTRING('mod_854n_1', LOCATE('_', 'mod_854n_1') + 1) AS result;
-- 结果: '854n_1'

2. 数值函数 (Numeric Functions)

用于数学计算。

  • ABS(X) : 返回 X 的绝对值。
sql 复制代码
    SELECT ABS(-5); -- 结果: 5
  • ROUND(X, D) : 将 X 四舍五入到 D 位小数。
scss 复制代码
    SELECT ROUND(1.2345, 2); -- 结果: 1.23
  • FLOOR(X) : 向下取整(返回小于或等于 X 的最大整数)。
sql 复制代码
 SELECT FLOOR(1.9); -- 结果: 1
  • CEIL(X) / CEILING(X) : 向上取整(返回大于或等于 X 的最小整数)。
sql 复制代码
 SELECT CEIL(1.1); -- 结果: 2
  • MOD(N, M) / N % M : 返回 N 除以 M 的余数。
sql 复制代码
SELECT MOD(10, 3); -- 结果: 1
  • POWER(N, M) / N^M: 返回N的M次方。
sql 复制代码
select power(2.0,3.0); -- 结果: 8
select power(2.0,-3.0);-- 结果: 0.125

3. 日期和时间函数 (Date and Time Functions)

用于处理日期和时间。

  • NOW() : 返回当前的日期和时间。
csharp 复制代码
 SELECT NOW(); -- 结果如: '2025-08-17 13:30:45'
  • CURDATE() : 返回当前日期。
csharp 复制代码
 SELECT CURDATE(); -- 结果如: '2025-08-17'
  • CURTIME() : 返回当前时间。
csharp 复制代码
SELECT CURTIME(); -- 结果如: '13:30:45'
  • DATEDIFF(expr1, expr2) : 返回 expr1expr2 相隔的天数。
sql 复制代码
 SELECT DATEDIFF('2025-08-20', '2025-08-17'); -- 结果: 3
  • DATE_ADD(date, INTERVAL expr unit) : 给日期添加时间间隔。
sql 复制代码
 SELECT DATE_ADD('2025-08-17', INTERVAL 10 DAY); -- 结果: '2025-08-27'
 SELECT DATE_ADD('2025-08-17', INTERVAL 1 MONTH); -- 结果: '2025-09-17'
  • DATE_FORMAT(date, format) : 格式化日期。
arduino 复制代码
 SELECT DATE_FORMAT('2025-08-17', '%Y年%m月%d日'); -- 结果: '2025年08月17日'
  • STR_TO_DATE(str, format) : 将字符串解析为日期。
arduino 复制代码
SELECT STR_TO_DATE('2025/08/17', '%Y/%m/%d'); -- 结果: '2025-08-17'

4. 聚合函数 (Aggregate Functions)

对一组值进行计算,通常与 GROUP BY 配合使用。

  • COUNT(*) : 计算行数(包括 NULL)。
sql 复制代码
 SELECT COUNT(*) FROM users; -- 统计总人数
  • SUM(expr) : 计算总和。
sql 复制代码
 SELECT SUM(price) FROM orders; -- 计算订单总金额
  • AVG(expr) : 计算平均值。
sql 复制代码
 SELECT AVG(score) FROM students; -- 计算平均分
  • MAX(expr) / MIN(expr) : 返回最大值/最小值。
sql 复制代码
SELECT MAX(age), MIN(age) FROM users; -- 查找最大和最小年龄

5. 控制流函数 (Control Flow Functions)

根据条件返回不同结果。

  • IF(expr, true_val, false_val) : 简单的条件判断。
sql 复制代码
 SELECT IF(score >= 60, '及格', '不及格') AS result FROM exam;
  • IFNULL(expr1, expr2) : 如果 expr1NULL,则返回 expr2,否则返回 expr1
sql 复制代码
 SELECT IFNULL(phone, '未提供') FROM users; -- 手机号为空时显示"未提供"
  • CASE 语句: 复杂的条件判断。
vbnet 复制代码
 SELECT name,
        CASE
            WHEN score >= 90 THEN '优秀'
            WHEN score >= 80 THEN '良好'
            WHEN score >= 60 THEN '及格'
            ELSE '不及格'
        END AS level
 FROM students;

6. 其他基础函数

  • COALESCE(value1, value2, ...) : 返回第一个非 NULL 的值(比 IFNULL 更强大,支持多个参数)。
sql 复制代码
SELECT COALESCE(email, phone, '联系方式未知') FROM users; --结果: (优先 `email`,其次 `phone`),如果两者都缺失,则显示 `'联系方式未知'`。
相关推荐
代码的余温24 分钟前
MySQL性能优化:10个关键参数调整指南
数据库·mysql·性能优化
柏油3 小时前
可视化 MySQL binlog 监听方案
数据库·后端·mysql
柏油4 小时前
MySQL 字符集 utf8 与 utf8mb4
数据库·后端·mysql
我科绝伦(Huanhuan Zhou)4 小时前
异构数据库兼容力测评:KingbaseES 与 MySQL 的语法・功能・性能全场景验证解析
数据库·mysql
BTU_YC4 小时前
docker compose部署mysql
mysql·adb·docker
麦麦大数据6 小时前
F004 新闻可视化系统爬虫更新数据+ flask + mysql架构
爬虫·mysql·flask·可视化·新闻
白鹭15 小时前
MySQL(多表查询练习)
数据库·mysql
AI 嗯啦19 小时前
SQL详细语法教程(三)mysql的函数知识
android·开发语言·数据库·python·sql·mysql
杰克尼20 小时前
mysql-条件查询案例
数据库·mysql