SUBSTRING_INDEX函数按分隔符和计数截取字符串,正count从左截取,负count从右截取,常用于提取邮箱用户名、域名、IP段或路径文件名等结构化数据。
在MySQL中,SUBSTRING_INDEX 是一个非常实用的字符串函数,用于根据指定的分隔符和计数来截取字符串的一部分。它常用于处理含有分隔符(如逗号、点号、斜杠等)的字段,比如提取邮箱用户名、IP地址段或路径中的某部分。
SUBSTRING_INDEX(str, delim, count)
当 count 为正数时,函数返回从字符串最左侧开始,到第 count 个分隔符之前的所有部分。
例如,提取邮箱中的用户名:
SELECT SUBSTRING_INDEX('john.doe@example.com', '@', 1)
;
结果:john.doe
再比如,提取域名的第一部分:
SELECT SUBSTRING_INDEX('www.example.com', '.', 2);结果:www.example
当 count 为负数时,函数从字符串右侧开始计数,返回从右边第 |count| 个分隔符之后的部分。
例如,提取邮箱的主域名:
SELECT SUBSTRING_INDEX('john.doe@example.com', '@', -1);结果:example.com
提取IP地址的最后两段:
SELECT SUBSTRING_INDEX('192.168.1.100', '.', -2);结果:1.100
这个函数在数据清洗和解析结构化字符串时特别有用。
例如,从完整路径中提取文件名:
SELECT SUBSTRING_INDEX('/var/log/app.log', '/', -1);结果:app.log
基本上就这些。只要掌握分隔符和正负 count 的方向逻辑,使用起来就很灵活。注意:如果 count 为 0,结果为空;如果分隔符不存在,返回整个字符串。不复杂但容易忽略细节。