注册

详解MySQL的SUBSTRING_INDEX()函数:返回字符串中指定分隔符的前几个或后几个子字符串

MySQL的SUBSTRING_INDEX()函数用于提取一个字符串中指定分隔符出现次数的子字符串。其函数原型为:

SUBSTRING_INDEX(str, delim, count)

其中,str表示需要处理的原始字符串,delim为指定的分隔符,count表示需要提取的子字符串在分隔符出现次数的位置。如果count为正数,则表示从左往右数第count个分隔符之前的所有子字符串;如果count为负数,则表示从右往左数第count个分隔符之后的所有子字符串。

以下是一个从左往右提取子字符串的例子:

SELECT SUBSTRING_INDEX('www.example.com', '.', 2);

上面的SQL语句会将字符串'www.example.com'以'.'为分隔符,提取出第1个和第2个分隔符之间的子字符串,即'www.example'。

以下是一个从右往左提取子字符串的例子:

SELECT SUBSTRING_INDEX('www.example.com', '.', -2);

上面的SQL语句会将字符串'www.example.com'以'.'为分隔符,提取出倒数第1个(也就是最右边的)分隔符之后的子字符串,即'com'。

另一个实用的例子是从Email地址中提取用户名部分:

SELECT SUBSTRING_INDEX('abc@example.com', '@', 1);

上面的SQL语句会将字符串'abc@example.com'以'@'为分隔符,提取出'@'之前的子字符串,即'abc'。

需要注意的是,如果指定的分隔符不存在于原始字符串中,则函数会返回整个原始字符串。