SUBSTRING_INDEX函数按分隔符和计数截取字符串,正count从左截取,负count从右截取,常用于提取邮箱用户名、域名、IP段或路径文件名等结构化数据。

在MySQL中,SUBSTRING_INDEX 是一个非常实用的字符串函数,用于根据指定的分隔符和计数来截取字符串的一部分。它常用于处理含有分隔符(如逗号、点号、斜杠等)的字段,比如提取邮箱用户名、IP地址段或路径中的某部分。
基本语法
SUBSTRING_INDEX(str, delim, count)
- str:原始字符串
- delim:分隔符(可以是任意字符或字符串)
- count:截取的段数。如果为正数,从左边开始数;如果为负数,从右边开始数
从左往右截取(正数count)
当 count 为正数时,函数返回从字符串最左侧开始,到第 count 个分隔符之前的所有部分。
例如,提取邮箱中的用户名:
SELECT SUBSTRING_INDEX('john.doe@example.com', '@', 1);结果:john.doe
再比如,提取域名的第一部分:
SELECT SUBSTRING_INDEX('www.example.com', '.', 2);结果:www.example
从右往左截取(负数count)
当 count 为负数时,函数从字符串右侧开始计数,返回从右边第 |count| 个分隔符之后的部分。
例如,提取邮箱的主域名:
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
结果:example.com
提取IP地址的最后两段:
SELECT SUBSTRING_INDEX('192.168.1.100', '.', -2);结果:1.100
实际应用场景
这个函数在数据清洗和解析结构化字符串时特别有用。
- 拆分URL获取路径或域名
- 解析日志中的请求参数
- 提取文件路径中的文件名或目录
- 分割逗号分隔的标签或类别字段
例如,从完整路径中提取文件名:
SELECT SUBSTRING_INDEX('/var/log/app.log', '/', -1);结果:app.log
基本上就这些。只要掌握分隔符和正负 count 的方向逻辑,使用起来就很灵活。注意:如果 count 为 0,结果为空;如果分隔符不存在,返回整个字符串。不复杂但容易忽略细节。









