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

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 ;
http://www.xdnf.cn/news/401.html

相关文章:

  • [每周一更]-(第140期):sync.Pool 使用详解:性能优化的利器
  • 【漫话机器学习系列】211.驻点(Stationary Points)
  • opencv--图像处理
  • [密码学基础]GMT 0029-2014签名验签服务器技术规范深度解析
  • 性能比拼: Elixir vs Go(第二轮)
  • [密码学基础]密码学发展简史:从古典艺术到量子安全的演进
  • 免费多平台运行器,手机畅玩经典主机大作
  • 【数据结构】励志大厂版·初阶(复习+刷题)单链表
  • 简单线段树的讲解(一点点的心得体会)
  • 开发基于python的商品推荐系统,前端框架和后端框架的选择比较
  • 碰一碰发视频系统源码搭建全解析:定制化开发
  • php多种方法实现xss过滤
  • linux oracle 19c 静默安装
  • 5G 毫米波滤波器的最优选择是什么?
  • Java核心技术卷第三章
  • [特殊字符] Kotlin与C的类型别名终极对决:typealias vs typedef,如何让代码脱胎换骨?
  • linux之文件系统
  • JavaWeb 课堂笔记 —— 14 Mybatis
  • 在VMware Workstation 17 Pro上实现Windows与UOS虚拟机之间复制粘贴文本及文件
  • PHP怎样判断浏览器类型和浏览器语言?
  • ESB —— 企业集成架构的基石:功能、架构与应用全解析
  • MOPSO实现无人机多目标路径规划(Matlab完整源码和数据)
  • Android 应用wifi direct连接通信实现
  • P3916 图的遍历
  • C语言学习之预处理指令
  • 【C++ Qt】信号和槽(内配思维导图 图文并茂 通俗易懂)
  • Java 动态代理教程(JDK 动态代理)(以RPC 过程为例)
  • 突破速率瓶颈:毫米波技术如何推动 5G 网络迈向极限?
  • Flink介绍——实时计算核心论文之Kafka论文总结
  • 用 R 语言打造交互式叙事地图:讲述黄河源区生态变化的故事