MySQL SUBSTRING_INDEX() 从给定字符串中返回指定数量的分隔符出现之前的子字符串。
当指定数字为正数时从最终分隔符的左侧返回子字符串,当指定数字为负数时从最终分隔符的右侧返回子字符串。
如果指定的次数大于分隔符的出现次数,则返回的子字符串将是总字符串。如果指定的数字为 0,则不会从给定的字符串中获取任何内容。
句法:
SUBSTRING_INDEX(str, delim, count)
争论:
姓名 | 描述 |
---|---|
字符串 | 一个字符串。 |
我分享 | 一个分隔符。 |
数数 | 一个整数,指示 delim 的出现次数。 |
语法图:
示例:MySQL SUBSTRING_INDEX() 函数
下面的 MySQL 语句从给定的字符串“www.mytestpage.info”返回最终定界符左侧的子字符串,即第二个定界符 (.)。从字符串的左侧开始计数。
代码:
SELECT SUBSTRING_INDEX('www.mytestpage.info','.',2);
复制
样本输出:
mysql> SELECT SUBSTRING_INDEX('www.mytestpage.info','.',2);
+----------------------------------------------+
| SUBSTRING_INDEX('www.mytestpage.info','.',2) |
+----------------------------------------------+
| www.mytestpage |
+----------------------------------------------+
1 row in set (0.02 sec)
图片展示:
使用负计数的 MySQL SUBSTRING_INDEX() 函数示例
下面的 MySQL 语句从给定字符串“www.mytestpage.info”返回最后定界符右侧的子字符串,即第二个定界符 (.)。从字符串的右侧开始计数。
代码:
SELECT SUBSTRING_INDEX('www.mytestpage.info','.',-2);
复制
样本输出:
mysql> SELECT SUBSTRING_INDEX('www.mytestpage.info','.',-2);
+-----------------------------------------------+
| SUBSTRING_INDEX('www.mytestpage.info','.',-2) |
+-----------------------------------------------+
| mytestpage.info |
+-----------------------------------------------+
1 row in set (0.00 sec)
图片展示:
示例:使用 MySQL SUBSTRING_INDEX() 函数将 IP 地址拆分为 4 个相应的八位字节
以下 MySQL 命令将 IP 地址拆分为 4 个相关的八位字节(数字信息单元)。假设 IP 地址存储在名为“log_file”的示例表中。
mysql> SELECT ip, SUBSTRING_INDEX(ip,'.',1) AS part1,
SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',2),'.',-1) AS part2,
SUBSTRING_INDEX(SUBSTRING_INDEX(ip,'.',-2),'.',1) AS part3,
SUBSTRING_INDEX(ip,'.',-1) AS part4 FROM log_file;
+-----------------+-------+-------+-------+-------+
| ip | part1 | part2 | part3 | part4 |
+-----------------+-------+-------+-------+-------+
| 127.0.0.1 | 127 | 0 | 0 | 1 |
| 192.128.0.15 | 192 | 128 | 0 | 15 |
| 255.255.255.255 | 255 | 255 | 255 | 255 |
+-----------------+-------+-------+-------+-------+
3 rows in set (0.00 sec)