MySQL 截取字符串的 6 种方法(图文教程)
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观
在 MySQL 中,处理字符串时,经常需要截取字符串的部分内容。MySQL 提供了多种字符串截取函数,可以根据需求灵活选择不同的截取方式。这些函数在数据清洗、文本处理和数据提取等操作中非常常用。
1. 使用 SUBSTRING
截取字符串
SUBSTRING
是 MySQL 中用于截取字符串的主要函数,可以根据指定的起始位置和长度提取部分字符串。其基本语法如下:
SUBSTRING(string, position, length);
- string:要截取的字符串。
- position:起始位置,从 1 开始。如果为负数,则从字符串末尾倒数计算位置。
- length:截取的字符长度(可选)。如果未指定,则截取到字符串末尾。
示例
SELECT SUBSTRING('犬小哈教程!', 1, 3); -- 输出:犬小哈
SELECT SUBSTRING('犬小哈教程!', -6, 5); -- 输出:犬小哈教程(从末尾向前计算)
2. 使用 LEFT
截取字符串左边部分
LEFT
函数用于从字符串左边开始截取指定长度的字符。基本语法如下:
LEFT(string, length);
- string:要截取的字符串。
- length:从左边开始截取的字符数。
示例
SELECT LEFT('犬小哈教程!', 5); -- 输出:犬小哈
3. 使用 RIGHT
截取字符串右边部分
RIGHT
函数用于从字符串右边开始截取指定长度的字符。其语法如下:
RIGHT(string, length);
- string:要截取的字符串。
- length:从右边开始截取的字符数。
示例
SELECT RIGHT('犬小哈教程!', 3); -- 输出:教程!
4. 使用 SUBSTRING_INDEX
截取指定字符之前或之后的字符串
SUBSTRING_INDEX
可以根据指定的分隔符和出现的次数来截取字符串的一部分。该函数非常适合处理需要根据特定字符分隔的字符串。
语法如下:
SUBSTRING_INDEX(string, delimiter, count);
- string:要截取的字符串。
- delimiter:分隔符。
- count:指定分隔符的出现次数。为正值时返回指定分隔符左边的字符串,为负值时返回右边的字符串。
示例
SELECT SUBSTRING_INDEX('犬小哈,教程,小哈学Java', ',', 2); -- 输出:犬小哈,教程
SELECT SUBSTRING_INDEX('犬小哈,教程,小哈学Java', ',', -1); -- 输出:小哈学Java
5. 使用 MID
函数(SUBSTRING
的别名)
MID
函数是 SUBSTRING
的别名,其用法与 SUBSTRING
相同。这在 MySQL 中是为了兼容其他数据库语法提供的支持。
MID(string, position, length);
示例
SELECT MID('犬小哈教程!', 1, 3); -- 输出:犬小哈
6. 使用 LPAD
和 RPAD
填充字符串并截取
LPAD
和 RPAD
用于在字符串的左侧或右侧填充字符,并且可以限制字符串的长度。虽然它们的主要功能是填充字符,但也可用于截取字符串。
示例
SELECT LPAD('犬小哈', 10, '*'); -- 输出:*****犬小哈
SELECT RPAD('犬小哈', 10, '-'); -- 输出:犬小哈-----
小结
MySQL 提供了多种字符串截取函数,SUBSTRING
是最基础的截取函数,而 LEFT
和 RIGHT
则分别用于从左或从右截取固定长度的字符串。如果需要根据分隔符截取,可以使用 SUBSTRING_INDEX
。灵活使用这些函数,可以满足大多数字符串处理需求,在数据提取和数据清洗时非常有用。