MySQL中常用函数的分类及示例
概述
以下是 MySQL 中常用函数的分类及示例,涵盖字符串处理、数值计算、日期操作、条件判断等常见场景:
一、字符串函数
1. CONCAT(str1, str2, ...)
拼接字符串。
SELECT CONCAT('Hello', ' ', 'World'); -- 输出: Hello World
2. SUBSTRING(str, start, length)
截取子字符串。
SELECT SUBSTRING('MySQL', 3, 2); -- 输出: 'SQ'
3. LENGTH(str)
返回字符串字节数(注意字符集)。
SELECT LENGTH('数据库'); -- UTF8 下输出: 9(每个汉字3字节)
4. CHAR_LENGTH(str)
返回字符数。
SELECT CHAR_LENGTH('数据库'); -- 输出: 3
5. REPLACE(str, old, new)
替换字符串中的内容。
SELECT REPLACE('apple banana', 'apple', 'orange'); -- 输出: 'orange banana'
6. LOWER(str) / UPPER(str)
转换大小写。
SELECT LOWER('MySQL'); -- 输出: 'mysql'
7. TRIM([BOTH | LEADING | TRAILING] trim_str FROM str)
去除首尾指定字符。
SELECT TRIM(BOTH '#' FROM '##MySQL##'); -- 输出: 'MySQL'
二、数值函数
1. ROUND(num, decimals)
四舍五入到指定小数位。
SELECT ROUND(3.1415, 2); -- 输出: 3.14
2. CEIL(num) / FLOOR(num)
向上/向下取整。
SELECT CEIL(3.2); -- 输出: 4
3. ABS(num)
返回绝对值。
SELECT ABS(-10); -- 输出: 10
4. RAND()
生成 0~1 之间的随机数。
SELECT RAND(); -- 输出: 0.1234 (随机值)
5. POW(base, exponent)
幂运算。
SELECT POW(2, 3); -- 输出: 8
三、日期与时间函数
1. NOW()
返回当前日期和时间。
SELECT NOW(); -- 输出: '2023-10-05 14:30:00'
2. CURDATE() / CURTIME()
返回当前日期或时间。
SELECT CURDATE(); -- 输出: '2023-10-05'
3. DATE_FORMAT(date, format)
格式化日期。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 输出: '2023-10-05 14:30:00'
4. DATEDIFF(date1, date2)
计算两个日期的天数差。
SELECT DATEDIFF('2023-10-10', '2023-10-05'); -- 输出: 5
5. DATE_ADD(date, INTERVAL expr unit)
日期加法。
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); -- 输出: 当前时间 + 7天
四、条件判断函数
1. IF(condition, value_if_true, value_if_false)
简单条件判断。
SELECT IF(score >= 60, '及格', '不及格') FROM students;
2. CASE WHEN
多条件分支判断。
SELECT CASE WHEN score >= 90 THEN '优秀'WHEN score >= 60 THEN '及格'ELSE '不及格'END AS grade
FROM students;
3. COALESCE(value1, value2, ...)
返回第一个非 NULL 的值。
SELECT COALESCE(NULL, '默认值'); -- 输出: '默认值'
4. IFNULL(value, default_value)
若值为 NULL,返回默认值。
SELECT IFNULL(null_column, 0) FROM table;
五、聚合函数
1. SUM(column)
求和。
SELECT SUM(sales) FROM orders;
2. AVG(column)
求平均值。
SELECT AVG(score) FROM students;
3. COUNT(column)
统计行数(NULL 值不计数)。
SELECT COUNT(*) FROM users; -- 统计总行数
4. MAX(column) / MIN(column)
返回最大/最小值。
SELECT MAX(price) FROM products;
5. GROUP_CONCAT(column SEPARATOR separator)
合并分组中的字符串。
SELECT GROUP_CONCAT(username SEPARATOR ', ') FROM users GROUP BY dept_id;
六、窗口函数(MySQL 8.0+)
1. ROW_NUMBER()
为结果集中的行生成序号。
SELECT ROW_NUMBER() OVER (ORDER BY score DESC) AS rank, username, score FROM students;
2. RANK() / DENSE_RANK()
排名函数(允许并列)。
SELECT RANK() OVER (ORDER BY sales DESC) AS sales_rank FROM orders;
3. LEAD(column, offset) / LAG(column, offset)
访问当前行的前/后某行数据。
SELECT LAG(amount) OVER (ORDER BY date) AS prev_amount FROM sales;
七、其他实用函数
1. JSON_EXTRACT(json_doc, path)
提取 JSON 数据。
SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name'); -- 输出: "John"
2. INET_ATON(ip_address)
将 IP 地址转换为整数。
SELECT INET_ATON('192.168.1.1'); -- 输出: 3232235777
3. MD5(str)
计算 MD5 哈希值。
SELECT MD5('password'); -- 输出: 32位哈希字符串
总结
• 根据具体场景选择函数,例如字符串处理用 SUBSTRING,日期计算用 DATE_ADD。
• 注意函数对 NULL 值的处理(如 COALESCE 和 IFNULL)。
• 窗口函数需 MySQL 8.0+ 支持,低版本可改用自连接或子查询实现类似功能。
相关文章:
MySQL中常用函数的分类及示例
概述 以下是 MySQL 中常用函数的分类及示例,涵盖字符串处理、数值计算、日期操作、条件判断等常见场景: 一、字符串函数 1. CONCAT(str1, str2, ...) 拼接字符串。 SELECT CONCAT(Hello, , World); -- 输出: Hello World2. SUBSTRING(str, start,…...
<sql>、<resultMap>、<where>、<foreach>、<trim>、<set>等标签的作用和用法
目录 一. sql 代码片段标签 二. resultMap 映射结果集标签 三. where 条件标签 四. set 修改标签 五. trim 标签 六. foreach 循环标签 一. sql 代码片段标签 sql 标签是 mybatis 框架中一个非常常用的标签页,特别是当一张表很有多个字段多,或者要…...
企业级HAProxy高可用离线部署实战(附Kubernetes APIServer负载均衡配置)
企业级HAProxy高可用离线部署实战(附Kubernetes APIServer负载均衡配置) 摘要:本文深入讲解在离线环境下部署HAProxy 3.1.1的全流程,涵盖源码编译、系统服务封装、K8S APIServer四层负载配置等核心环节,并提供生产级高…...
实现Azure Databricks安全地请求企业内部API返回数据
需要编写一个Databricks在Azure云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Databrick…...
kafka认证部署
首先启动 zookeeper /home/kafka/bin/zookeeper-server-start.sh /home/kafka/config/zookeeper.properties 创建SCRAM证书 /home/kafka/bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config SCRAM-SHA-256[iterations8192,passwordliebe],SCRAM-SHA-512[p…...
【项目】CherrySudio配置MCP服务器
CherrySudio配置MCP服务器 (一)Cherry Studio介绍(二)MCP服务环境搭建(1)环境准备(2)依赖组件安装<1> Bun和UV安装 (3)MCP服务器使用<1> 搜索MCP…...
【LeetCode 热题 100】双指针 系列
📁283. 移动零 对于该题目,需要注意的是两个地方,一是保持非零元素的相对顺序,以及O(1)的空间复杂度。 采用双指针的思路,将数组划分成3个区间,。 [0 , left]:该区间内元素全是非零元素。 [left1 , right…...
【技术派后端篇】 Redis 实现用户活跃度排行榜
在各类互联网应用中,排行榜是一个常见的功能需求,它能够直观地展示用户的表现或贡献情况,提升用户的参与感和竞争意识。在技术派项目中,也引入了用户活跃度排行榜,该排行榜主要基于 Redis 的 ZSET 数据结构来实现。接下…...
模拟算法(一)作业分析及答案
目录 作业1:角谷猜想 解题思路 : 代码实现: 作业2:校门外的树 解题思路 注意事项 代码实现 作业3:乒乓球 编辑 问题重述 解题思路: 作业1:角谷猜想 【描述】 所谓角谷猜想…...
西红柿番茄检测数据集VOC+YOLO格式2320张1类别可用于计数
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2320 标注数量(xml文件个数):2320 标注数量(txt文件个数):2320 …...
企业级实战:将Java服务打包为Docker镜像的两种高效方法
企业级实战:将Java服务打包为Docker镜像的两种高效方法 摘要:本文针对Java服务容器化部署场景,提供 基于容器Commit 和 Dockerfile构建 两种镜像制作方案。重点解决动态库依赖、信号量配置、环境变量注入等企业级痛点问题,并提供…...
专题十六:虚拟路由冗余协议——VRRP
一、VRRP简介 VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议通过把几台设备联合组成一台虚拟的设备,使用一定的机制保证当主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保持通讯的连续性和…...
Java中常见的锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
在Java中,锁是实现多线程同步的核心机制。不同的锁适用于不同的场景,理解其实现原理和使用方法对优化性能和避免并发问题至关重要。 一、隐式锁:synchronized 关键字 实现原理 基于对象监视器(Monitor):每…...
DDPM(diffusion)原理
DDPM(diffusion)原理 1、DDPM(原理)2、DDPM和 Conditional DDPM(原理解释)2.1. Diffusion Models 原理详解核心思想前向扩散过程(Forward Diffusion)反向去噪过程(Revers…...
《软件设计师》复习笔记(2.2)——效验码、体系结构、指令、流水线
目录 一、校验码 码距 奇偶校验码 循环冗余校验码(CRC) 海明码 真题示例: 二、体系结构 Flynn分类法 三、指令系统 指令组成 指令执行过程 指令的寻址方式 操作数的寻址方式 CISC vs RISC 真题示例: 四、流水线技…...
BT1120 BT656驱动相关代码示例
前些年做视频输出项目的时候用过bt1120 tx与rx模块,现将部分代码进行记录整理。代码功能正常,可正常应用。 1. rx部分: /****************************************************************************** Copyright (C) 2021,All rights …...
2025.04.19-阿里淘天春招算法岗笔试-第一题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 字符交换智慧 问题描述 卢小姐有一个长度为 n n n 的字符串...
IsaacSim Asserts 配置
IsaacSim Asserts 配置 背景解决方案资源准备具体操作步骤验证 背景 我是习惯使用 isaacsim 的 standalone 模式,使用 python 脚本直接运行 script,然后弹窗,按照规则正确运行即可,但是,这就导致了一些问题出现&#…...
关于viewpager常见的泄漏
在一个页面中 如果有用到tab,有需要进行fragment的切换,经常就看到了private var fragments arrayListOf<Fragment>()private fun initFragment() {arguments?.let {hopeToPosition it.getInt(IntentConstant.MAIN_PAGE_GO, 0)workoutType it.…...
深入剖析 C/S 与 B/S 架构及网络通信基础
目录 C/S 架构详解 概念与示例 优点 B/S 架构详解 概念与示例 优势 缺点 C/S 与 B/S 的区别 架构组成 使用场景 开发和维护 安全性 网络通信基础 IP 地址 MAC(物理地址) 端口 路由器 网关 子网掩…...
接口自动化 ——fixture allure
一.参数化实现数据驱动 上一篇介绍了参数化,这篇 说说用参数化实现数据驱动。在有很多测试用例的时候,可以将测试用例都存储在文件里,进行读写调用。本篇主要介绍 csv 文件和 json 文件。 1.读取 csv 文件数据 首先创建 csv 文件ÿ…...
systemctl管理指令
今天我们来继续学习服务管理指令,接下来才是重头戏-systemctl,那么话不多说,直接开始吧. systemctl管理指令 1.基本语法: systemctl [start | stop | restart | status]服务 注:systemctl指令管理的服务在/usr/lib/ systemd/system查看 2.systemctl设置服务的自…...
【文件操作与IO】详细解析文件操作与IO (二)
本篇博客是上一篇文章的续写,重点介绍数据流,还包括三道练习题. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心…...
go-map+sync.map的底层原理
map 哈希冲突解决方式 1.拉链法 2.开放地址法 底层结构 Go 的 map 在源码中由 runtime.hmap 结构体表示,buckets-指向桶数组的指针(常规桶),oldbuckets-扩容时指向旧桶数组的指针。 type hmap struct {count int // 当前元素个数(len…...
java怎么找bug?Arthas原理与实战指南
Arthas原理与实战指南 1. Arthas简介 Arthas是阿里巴巴开源的Java诊断工具,其名字取自《魔兽世界》的人物阿尔萨斯。它面向线上问题定位,被广泛应用于性能分析、定位问题、安全审计等场景。Arthas的核心价值在于它能够在不修改应用代码、不重启Java进程…...
Windows使用SonarQube时启动脚本自动关闭
一、解决的问题 Windows使用SonarQube时启动脚本自动关闭,并发生报错: ERROR: Elasticsearch did not exit normally - check the logs at E:\Inori_Code\Year3\SE\sonarqube-25.2.0.102705\sonarqube-25.2.0.102705\logs\sonarqube.log ERROR: Elastic…...
Day53 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* T…...
物联网智慧教室项目(完整版)
物联网智慧教室项目(一):智慧教室项目解决方案 一、智慧教室项目设计 (一)环境信息采集控制功能 1、硬件设计 使用STM32开发板模拟灯光控制,报警控制,光照信息采集: 灯光控制通过GPIO控制板载LED报警控…...
替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台
通过云轴科技ZStack Cloud云平台,山西证券打造了敏捷部署、简单运维的云平台,不仅兼容x86、海光、鲲鹏三种异构服务器实现一云多芯,还通过云平台虚拟化纳管模块纳管原有VMware虚拟化资源,并对接第三方集中式存储,在保护…...
计算机网络期中复习笔记(自用)
复习大纲 –第一章 概述 计算机网络的组成 网络边缘:主机和网络应用程序(又称为“端系统”) 端系统中运行的程序之间的通信方式可划分为两大类: 客户/服务器方式(C/S方式) 对等方式(P2P方式…...
