当前位置: 首页 > news >正文

mysql的函数(第一期)

一、字符串函数​

处理文本数据,常用函数:

  1. ​CONCAT(str1, str2, ...)​

    • ​作用​​:拼接字符串。
    • ​示例​​:SELECT CONCAT('Hello', ' ', 'World'); → Hello World
    • ​注意​​:若任一参数为 NULL,结果为 NULL
  2. ​CONCAT_WS(separator, str1, str2, ...)​

    • ​作用​​:用分隔符拼接字符串,自动忽略 NULL
    • ​示例​​:SELECT CONCAT_WS('-', '2023', NULL, '10'); → 2023-10
  3. ​SUBSTRING(str, start, length)​

    • ​作用​​:截取子串,索引从 1 开始。
    • ​示例​​:SELECT SUBSTRING('MySQL', 3, 2); → SQ
  4. ​REPLACE(str, from_str, to_str)​

    • ​作用​​:替换字符串中的子串。
    • ​示例​​:SELECT REPLACE('foo bar', 'foo', 'hello'); → hello bar
  5. ​TRIM([LEADING|TRAILING|BOTH] trim_str FROM str)​

    • ​作用​​:去除首尾空格或指定字符。
    • ​示例​​:SELECT TRIM(' MySQL '); → MySQL
  6. ​LENGTH(str)​​ 与 ​​CHAR_LENGTH(str)​

    • ​区别​​:LENGTH 返回字节数,CHAR_LENGTH 返回字符数。
    • ​示例​​:SELECT LENGTH('中文'), CHAR_LENGTH('中文'); → 6, 2(UTF-8编码)

​二、数值函数​

处理数值计算,常用函数:

  1. ​ROUND(num, decimals)​

    • ​作用​​:四舍五入,decimals 可为负数。
    • ​示例​​:SELECT ROUND(123.456, -1), ROUND(123.456, 2); → 120, 123.46
  2. ​CEIL(num)​​ 与 ​​FLOOR(num)​

    • ​作用​​:向上/向下取整。
    • ​示例​​:SELECT CEIL(3.1), FLOOR(3.9); → 4, 3
  3. ​RAND()​

    • ​作用​​:生成 [0,1) 的随机数。
    • ​示例​​:SELECT RAND(); → 随机值如 0.123
    • ​注意​​:结合 ORDER BY RAND() 可随机排序,但性能较差。
  4. ​POW(x, y)​

    • ​作用​​:计算 x 的 y 次方。
    • ​示例​​:SELECT POW(2, 3); → 8

​三、日期时间函数​

处理日期和时间,常用函数:

  1. ​NOW()​

    • ​作用​​:返回当前日期和时间(格式:YYYY-MM-DD HH:mm:ss)。
    • ​示例​​:SELECT NOW(); → 2023-10-10 14:30:00
  2. ​DATE_FORMAT(date, format)​

    • ​作用​​:格式化日期。
    • ​示例​​:SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); → 2023-10-10
  3. ​DATEDIFF(date1, date2)​

    • ​作用​​:计算两个日期相差的天数。
    • ​示例​​:SELECT DATEDIFF('2023-10-10', '2023-10-01'); → 9
  4. ​DATE_ADD(date, INTERVAL expr unit)​

    • ​作用​​:日期加法。
    • ​示例​​:SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH); → 当前日期加一个月。
  5. ​EXTRACT(unit FROM date)​

    • ​作用​​:提取日期部分(如年、月、日)。
    • ​示例​​:SELECT EXTRACT(YEAR FROM '2023-10-10'); → 2023

​四、流程控制函数​

处理条件逻辑:

  1. ​IF(condition, value_if_true, value_if_false)​

    • ​示例​​:SELECT IF(score >= 60, 'Pass', 'Fail');
  2. ​CASE​

    • ​作用​​:多条件分支。
    • ​示例​​:
      SELECT CASE WHEN score >= 90 THEN 'A'WHEN score >= 80 THEN 'B'ELSE 'C'END AS grade
      FROM students;
  3. ​COALESCE(value1, value2, ...)​

    • ​作用​​:返回第一个非 NULL 值。
    • ​示例​​:SELECT COALESCE(NULL, 'default'); → default

​五、聚合函数​

对多行数据进行统计:

  1. ​SUM(column)​

    • ​作用​​:求和,忽略 NULL
  2. ​COUNT(expr)​

    • ​示例​​:COUNT(*) 统计行数,COUNT(DISTINCT column) 去重计数。
  3. ​GROUP_CONCAT(expr)​

    • ​作用​​:合并多行结果,默认逗号分隔。
    • ​示例​​:SELECT GROUP_CONCAT(name SEPARATOR '|') FROM users;
  4. ​AVG(column)​​ 与 ​​MAX(column)/MIN(column)​

    • ​注意​​:AVG 忽略 NULLMAX/MIN 适用于数值、日期和字符串。

​六、加密函数​

  1. ​MD5(str)​​ 与 ​​SHA1(str)​

    • ​示例​​:SELECT MD5('password'); → 32位哈希值。
  2. ​SHA2(str, hash_length)​

    • ​示例​​:SELECT SHA2('password', 256); → 64位哈希值。

​七、注意事项​

  1. ​索引失效​​:避免在 WHERE 中对索引列使用函数(如 WHERE YEAR(date) = 2023)。
  2. ​NULL 处理​​:函数如 SUM 忽略 NULL,而 CONCAT 遇到 NULL 返回 NULL
  3. ​版本差异​​:窗口函数(如 ROW_NUMBER())仅支持 MySQL 8.0+。
  4. ​性能优化​​:谨慎使用 ORDER BY RAND() 或大文本处理函数。

​八、自定义函数​

通过 CREATE FUNCTION 可定义存储函数,需注意权限和语法:

DELIMITER $$
CREATE FUNCTION add_tax(price FLOAT) RETURNS FLOAT
BEGINRETURN price * 1.1;
END 
$$
DELIMITER ;

相关文章:

  • 简单线段树的讲解(一点点的心得体会)
  • 动态规划算法:状态压缩
  • 【python编程从入门到到实践】第二章 变量和简单的数据类型
  • Nginx 文件上传大小限制及 `client_max_body_size` 最大值详解
  • Linux 系统盘制作 | 引导加载器(GRUB 为例)| mount
  • 二叉树进阶 - 二叉搜索树
  • PDF转excel+json ,vue3+SpringBoot在线演示+附带源码
  • 宇树机器狗go2—slam建图(1)点云格式
  • MLLMs for TSAD ?
  • 单例模式:懒汉式的两种优化写法
  • 编译报错 宏 _IOC_SIZEBITS,而这个宏在编译时未定义
  • Bash 中的数学运算详解
  • 【每天一个知识点】模式识别
  • 自动驾驶---决策规划之导航增强端到端
  • Jinja2模板引擎SSTI漏洞
  • 加密壳(二)将shellcode写入PE
  • STL——红黑树的封装及map/set的模拟实现
  • 数字孪生火星探测车,星际探索可视化
  • 泛目录二级目录【实用指南】,无极站群系统2025升级版
  • leetcode125.验证回文串
  • 石黑一雄《莫失莫忘》与“克隆人”:殖民地的记忆与行动
  • 三一重工去年净利增逾三成至59.75亿,拟分红超30亿元
  • 福特预期6月美国市场涨价,机构称加税让每辆汽车成本至少增加数千美元
  • 鲁比奥在法国只字不提关税,美国威胁下欧盟勉力维持统一战线
  • 黄仁勋时隔3个月再次到访北京
  • 是什么,坚定了外资企业“在浦东为世界”的决心?