1. MySQL函数概述MySQL作为最流行的关系型数据库之一提供了丰富的内置函数库这些函数可以显著简化SQL查询的编写提高数据处理效率。函数本质上是一组预定义的SQL指令集合能够接收参数、执行特定操作并返回结果。在实际开发中合理使用这些函数可以避免在应用层编写大量重复代码将数据处理逻辑下推到数据库层面执行。MySQL函数主要分为以下几大类字符串函数处理文本数据数值函数数学运算和数值处理日期时间函数日期和时间操作聚合函数对多行数据进行计算控制流函数条件逻辑处理系统信息函数获取数据库和系统信息2. 字符串处理函数2.1 基础字符串操作CONCAT() 是最常用的字符串连接函数SELECT CONCAT(first_name, , last_name) AS full_name FROM employees;SUBSTRING() 用于提取子字符串SELECT SUBSTRING(MySQL Functions, 7, 8); -- 返回 FunctionsLENGTH() 和 CHAR_LENGTH() 的区别SELECT LENGTH(中文), -- 返回字节数(UTF8下通常为6) CHAR_LENGTH(中文); -- 返回字符数(2)2.2 字符串格式化函数TRIM() 函数去除首尾空格SELECT TRIM( MySQL ); -- 返回 MySQLUPPER() 和 LOWER() 转换大小写SELECT UPPER(mysql), LOWER(MySQL);FORMAT() 数字格式化SELECT FORMAT(1234567.89, 2); -- 返回 1,234,567.893. 数值计算函数3.1 基本数学运算ROUND() 四舍五入SELECT ROUND(3.14159, 2); -- 返回 3.14CEIL() 和 FLOOR()SELECT CEIL(3.2), FLOOR(3.8); -- 分别返回4和3RAND() 生成随机数SELECT RAND(); -- 返回0-1之间的随机浮点数3.2 高级数值处理MOD() 取模运算SELECT MOD(10, 3); -- 返回1POW() 幂运算SELECT POW(2, 10); -- 返回1024TRUNCATE() 截断小数SELECT TRUNCATE(3.14159, 3); -- 返回3.1414. 日期时间函数4.1 日期获取与计算NOW() 获取当前日期时间SELECT NOW(); -- 返回 2023-08-20 14:30:45DATE_ADD() 和 DATE_SUB()SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH); SELECT DATE_SUB(NOW(), INTERVAL 1 WEEK);DATEDIFF() 计算日期差SELECT DATEDIFF(2023-12-31, 2023-01-01); -- 返回3644.2 日期格式化DATE_FORMAT() 自定义格式SELECT DATE_FORMAT(NOW(), %Y年%m月%d日 %H时%i分);DAYNAME() 和 MONTHNAME()SELECT DAYNAME(NOW()), MONTHNAME(NOW());5. 聚合函数5.1 基本聚合操作COUNT() 统计行数SELECT COUNT(*) FROM employees;SUM() 和 AVG()SELECT SUM(salary), AVG(salary) FROM employees;MAX() 和 MIN()SELECT MAX(salary), MIN(salary) FROM employees;5.2 分组聚合GROUP_CONCAT() 合并分组结果SELECT department_id, GROUP_CONCAT(last_name) AS employees FROM employees GROUP BY department_id;6. 条件判断函数6.1 IF函数基本IF() 函数SELECT product_name, IF(stock 0, 有货, 缺货) AS status FROM products;6.2 CASE表达式简单CASESELECT product_name, CASE price_range WHEN LOW THEN 经济型 WHEN MID THEN 标准型 WHEN HIGH THEN 豪华型 END AS type FROM products;搜索式CASESELECT product_name, CASE WHEN price 100 THEN 低价 WHEN price BETWEEN 100 AND 500 THEN 中价 ELSE 高价 END AS price_level FROM products;7. 系统信息函数7.1 数据库信息VERSION() 获取MySQL版本SELECT VERSION();DATABASE() 当前数据库SELECT DATABASE();7.2 连接信息USER() 和 CURRENT_USER()SELECT USER(), CURRENT_USER();CONNECTION_ID() 连接IDSELECT CONNECTION_ID();8. 窗口函数(MySQL 8.0)8.1 排名函数ROW_NUMBER()SELECT employee_id, last_name, salary, ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank FROM employees;RANK() 和 DENSE_RANK()SELECT employee_id, last_name, salary, RANK() OVER (ORDER BY salary DESC) AS rank, DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank FROM employees;8.2 分析函数LEAD() 和 LAG()SELECT order_date, amount, LAG(amount, 1) OVER (ORDER BY order_date) AS prev_amount, LEAD(amount, 1) OVER (ORDER BY order_date) AS next_amount FROM orders;9. JSON函数(MySQL 5.7)9.1 JSON创建与修改JSON_OBJECT()SELECT JSON_OBJECT(name, John, age, 30);JSON_ARRAY()SELECT JSON_ARRAY(1, a, TRUE, NULL);9.2 JSON查询JSON_EXTRACT()SELECT JSON_EXTRACT({name:John,age:30}, $.name);JSON_CONTAINS()SELECT JSON_CONTAINS({a:1,b:2}, 1, $.a);10. 函数使用注意事项10.1 性能考虑函数索引的使用-- 创建函数索引 CREATE INDEX idx_name_lower ON employees(LOWER(last_name));避免在WHERE条件中使用函数-- 不推荐 SELECT * FROM orders WHERE DATE_FORMAT(order_date, %Y-%m) 2023-08; -- 推荐 SELECT * FROM orders WHERE order_date BETWEEN 2023-08-01 AND 2023-08-31;10.2 兼容性问题不同MySQL版本的函数差异MySQL 5.7引入了JSON函数MySQL 8.0引入了窗口函数某些函数在不同版本的行为可能不同10.3 最佳实践为常用函数组合创建存储函数DELIMITER // CREATE FUNCTION full_name(first VARCHAR(50), last VARCHAR(50)) RETURNS VARCHAR(101) DETERMINISTIC BEGIN RETURN CONCAT(first, , last); END // DELIMITER ;使用函数提高SQL可读性SELECT order_id, DATE_FORMAT(order_date, %Y-%m-%d) AS formatted_date, CONCAT($, FORMAT(total_amount, 2)) AS amount FROM orders;注意NULL值处理SELECT IFNULL(NULL, 默认值); -- 返回默认值 SELECT COALESCE(NULL, NULL, 第一个非NULL值); -- 返回第一个非NULL值
企业数字化 ERP 产品动态
相关推荐
MySQL表结构查看方法与实战技巧 1. MySQL表结构查看基础 刚接触MySQL数据库时,第一件需要掌握的事情就是如何查看表结构。作为数据库的骨架,表结构决定了数据的存储方式和访问路径。我刚开始工作时就曾因为不熟悉表结构查看方法,导致写出的SQL语句效率低下,甚至引… · 2026/11/3 20:09:03
SAP功能范围损益表:S_ALR_87012284到S_PL0_86000028 简介:面向SAP FI财务模块使用者、报表实施顾问与成本分析人员,这份文档围绕F.01损益表功能范围的实现展开,重点解决传统总账报表无法体现功能范围、期间费用与利润表项目难以对应分析的问题。内容从S_ALR_87012284与S_PL0_86000028、S_PL0_86… · 2026/11/3 13:25:38
RabbitMQ客户端核心机制与生产实践指南 1. RabbitMQ客户端基础概念与核心机制 RabbitMQ作为AMQP协议的标准实现,其客户端操作与传统TCP/UDP/HTTP通信有着本质区别。理解这种差异是正确使用RabbitMQ的前提。RabbitMQ服务本身不处理业务逻辑,而是作为消息代理(Message Broker… · 2026/11/3 11:18:57
徐工特种技工招聘通过率揭秘:证书过期了不知道怎么复审延期怎么办 徐工特种技工招聘通过率揭秘:证书过期了不知道怎么复审延期怎么办 证书过期了不知道怎么复审延期?你不是一个人。很多人在特种作业证快要到期的时候才发现,复审流程复杂、材料不全、时间紧迫,一不小心就错过了复审窗口期,导致证书失效,影响工作甚至被单… · 2026/11/10 14:16:24
义乌电工证在哪里培训报名网上查询全攻略,工地太忙也能搞定 义乌电工证在哪里培训报名网上查询全攻略,工地太忙也能搞定 工地太忙根本没时间复习考试,特别是像你这样天天在工地跑的电工,一边要盯现场,一边还要想着怎么把电工证的考试和复审搞定。 义乌电工证在哪里培训… · 2026/11/10 14:16:24
心理异常可以考电工证最新政策解读 电工证心理异常还能考?值不值得考?信阳班组负责人必须知道的实情 不知道去哪报名怕被中介坑,这几乎是每个想考电工证的人的共同烦恼。尤其是心理异常的人,更是担心自己被拒之门外,连报名资格都成问题。但根据最新的政策, 心理异常可以考电工证… · 2026/11/10 14:16:24
重庆长寿可以考电工证官方回应来了,过期证书怎么补办? 重庆长寿可以考电工证官方回应来了,过期证书怎么补办? 证书过期了不知道怎么复审延期,你不是一个人。最近不少重庆长寿的电工朋友都在问, 重庆长寿可以考电工证 ,但问题是,证书有效期过了,该怎么办?其实官方早有回应,只要操作得当,… · 2026/11/10 14:16:24
豫事办怎么查询电工证 之前考的证在外省能不能转过来怎么报名 豫事办怎么查询电工证 之前考的证在外省能不能转过来怎么报名 之前考的证在外省能不能转过来?这几乎是所有在外地打工、又打算回老家发展的电工同行们最头疼的问题。尤其是在焦作这样的工业城市,建筑工地、厂矿企业对持证电工的需求非常大,但如果你的证是… · 2026/11/10 14:16:24
豫事办怎么查询电工证怎么查 全国通用电工证怎么考 豫事办怎么查询电工证怎么查 全国通用电工证怎么考 你现在手里拿着电工证吗?还是正在为考电工证发愁?很多刚入行的朋友都遇到过这种情况, 急需特种作业证才能上岗找工作… · 2026/11/10 14:15:24
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/10 2:16:10
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/9 3:11:26
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/9 5:24:17
丹寨电工证怎么考?内部消息透露报考条件和流程 丹寨电工证怎么考?内部消息透露报考条件和流程 急需特种作业证才能上岗找工作,这是很多电工朋友最真实的焦虑。尤其是像丹寨电工证这样的证书,直接影响你的职业发展和薪资待遇。但你知道吗?很多人都在报考过程中踩坑,有的甚至花了几千块最后白忙一场。今… · 2026/11/10 0:00:13
成都建筑电工证办理郑州报考避坑指南 成都建筑电工证办理郑州报考避坑指南 证书过期了不知道怎么复审延期?别慌!这篇文章手把手带你解决成都建筑电工证办理的难题,顺便避掉郑州报考的那些坑。不管你是刚拿到证的新手,还是准备复审的老电工,这波干货都别错过。… · 2026/11/10 0:00:13
梅州低压电工证怎么考?怕被中介坑?手把手教你全国通用流程 梅州低压电工证怎么考?怕被中介坑?手把手教你全国通用流程 你是不是正为梅州低压电工证发愁?不知道去哪报名,怕被中介骗钱,又担心证书是不是全国通用?其实,这些顾虑都是正常人会有的。今天我就从一个在开封房建工程一线干了几年的电工角度,手把手教你… · 2026/11/10 0:00:13
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/9 11:23:35
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/9 11:23:58
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/9 11:25:08