在实际开发中,有时需要将一个字符串切割成数组,比如将一串数据逗号隔开的字符串转换成数组,以便进行遍历或其他操作。而
MySQL
数据库
中也提供了一些
函数
来实现字符串切割成数组的功能。
MySQL
内置
函数
substring_index()
MySQL
内置
函数
substring_index()可以按照指定的分隔符将一个字符串切割成多个部分,并返回第N个部分。具体语法如下:
substring_index(str,delim,count)
str:待切割的字符串
delim:分隔符
count:返回第几部分(从左边数,如果是负数则从右边数)
字符串切割成数组示例代码:
mysql
> SELECT substring_index('a,b,c,d,e', ',', 1)
as
value1, substring_index('a,b,c,d,e', ',', 2)
as
value2, substring_index('a,b,c,d,e', ',', 3)
as
value3;
+--------+--------+--------+
| value1 | value2 | value3 |
+--------+--------+--------+
| a | a,b | a,b,c |
+--------+--------+--------+
1 row in set (0.00 sec)
上述代码中,我们将字符串'a,b,c,d,e'按照','切割成多个部分,并返回前3个部分。这样我们就将字符串切割成了一个数组。
拓展:
MySQL
自定义
函数
实现字符串切割成数组
如果我们需要在复杂的
SQL
查询中频繁使用字符串切割成数组的功能,那么可以自定义
MySQL
函数
来实现。下面是一个自定义
函数
示例代码:
mysql
> DELIMITER //
mysql
> CREATE FUNCTION SPLIT_STR(
str V
AR
CH
AR
(255),
delim V
AR
CH
AR
(12),
pos INT
RETURNS V
AR
CH
AR
(255)
DETERMINISTIC
BEGIN
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),
LENGTH(SUBSTRING_INDEX(str, delim, pos -1)) + 1),
delim, '');
END//
mysql
> DELIMITER ;
以上代码实现了自定义的SPLIT_STR
函数
,它接收三个参数:待切割的字符串、分隔符、要返回的部分位置。具体使用示例如下:
mysql
> SELECT SPLIT_STR('a,b,c,d,e', ',', 1)
as
value1, SPLIT_STR('a,b,c,d,e', ',', 2)
as
value2, SPLIT_STR('a,b,c,d,e