Skip to content

SUBSTRING_INDEX()

函数说明

此函数 SUBSTRING_INDEX() 以分隔符为索引,获取不同索引位的字符。

如果 count 为正,则返回最后一个分隔符左侧(从左侧开始计数)的所有内容。

如果 count 为负数,则返回最后一个分隔符右侧(从右侧开始计数)的所有内容。

如果参数为 NULLSUBSTRING_INDEX() 将返回 NULL

语法说明

> SUBSTRING_INDEX(str,delim,count)

即,substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置 N)

参数释义

参数 说明
str 字符串
delim 分隔符
count 表示 delim 出现次数的整数。

示例

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
+--------------------------------------+
| substring_index(www.mysql.com, ., 2) |
+--------------------------------------+
| www.mysql                            |
+--------------------------------------+
1 row in set (0.03 sec)

mysql> select substring_index('xyz', 'abc', 9223372036854775808);
+------------------------------------------------+
| substring_index(xyz, abc, 9223372036854775808) |
+------------------------------------------------+
| xyz                                            |
+------------------------------------------------+
1 row in set (0.02 sec)

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
+---------------------------------------+
| substring_index(www.mysql.com, ., -2) |
+---------------------------------------+
| mysql.com                             |
+---------------------------------------+
1 row in set (0.02 sec)

mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('192,168,8,203', ',', 2), ',',-1);
+--------------------------------------------------------------+
| substring_index(substring_index(192,168,8,203, ,, 2), ,, -1) |
+--------------------------------------------------------------+
| 168                                                          |
+--------------------------------------------------------------+
1 row in set (0.02 sec)

create table test(a varchar(100), b varchar(20), c int);
insert into test values('www.mysql.com', '.', 0);
insert into test values('www.mysql.com', '.', 1);
insert into test values('www.mysql.com', '.', 2);
insert into test values('www.mysql.com', '.', 3);
insert into test values('www.mysql.com', '.', 9223372036854775808);
insert into test values('www.mysql.com', '.', -1);
insert into test values('www.mysql.com', '.', -2);
insert into test values('www.mysql.com', '.', -3);
mysql> select SUBSTRING_INDEX(a, b, c) from test;
+--------------------------+
| substring_index(a, b, c) |
+--------------------------+
|                          |
| www                      |
| www.mysql                |
| www.mysql.com            |
| com                      |
| mysql.com                |
| www.mysql.com            |
+--------------------------+
7 rows in set (0.02 sec)