Java开发

MySQL 好用的字符串函数 - SUBSTRING_INDEX

2024-12-30  本文已影响0人  _浅墨_

SUBSTRING_INDEX 是 MySQL 中的一个字符串函数,用于从指定分隔符中提取子字符串。它通过给定的分隔符分割字符串,并返回指定位置的子字符串。

语法

SUBSTRING_INDEX(string, delimiter, count)

参数说明
• string:要操作的字符串。
• delimiter:用作分隔符的字符串。
• count:一个整数,表示返回多少个分隔符前或后的部分:
• 正数:从左到右提取,返回从第一个子字符串到第 count 个分隔符之前的部分。
• 负数:从右到左提取,返回从最后一个子字符串到第 count 个分隔符之后的部分。

示例

示例 1:提取分隔符左侧的子字符串

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

结果:www
说明:按 . 分隔,从左开始取第一个分隔符之前的部分。

示例 2:提取分隔符右侧的子字符串

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

结果:com
说明:按 . 分隔,从右开始取第一个分隔符之后的部分。

示例 3:提取多个分隔符之间的部分

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

结果:www.example
说明:按 . 分隔,从左开始取前两个部分。

示例 4:提取从右到左的多个分隔符之间的部分

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

结果:example.com
说明:按 . 分隔,从右开始取后两个部分。

注意事项
1. 分隔符不存在:如果字符串中不包含分隔符,则返回整个字符串。

SELECT SUBSTRING_INDEX('example', '.', 1);

结果:example

2.  count 超过实际分隔符数量:如果 count 大于分隔符实际数量,则返回整个字符串。

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

结果:www.example.com

3.  分隔符为空字符串:将直接返回空字符串。

SELECT SUBSTRING_INDEX('example', '', 1);

结果:''

常见应用场景
1. 提取域名部分:

SELECT SUBSTRING_INDEX('user@domain.com', '@', -1) AS domain;

结果:domain.com

2.  从路径中提取文件名:

SELECT SUBSTRING_INDEX('/path/to/file.txt', '/', -1) AS filename;

结果:file.txt

3.  从 IP 地址中提取网段:

SELECT SUBSTRING_INDEX('192.168.1.1', '.', 3) AS subnet;

结果:192.168.1

如果需要更复杂的字符串操作,可以结合其他字符串函数(如 LOCATE、INSTR、CONCAT)使用。

上一篇 下一篇

猜你喜欢

热点阅读