mysql 字符串转数组
时间: 2023-11-17 21:02:53 浏览: 127
中可以通过自定义存储过程来实现字符串转数组的功能。下面是一个示例存储过程,可以将一个以指定分隔符分隔的字符串转换为数组:
```mysql
DROP TABLE IF EXISTS list;
CREATE TEMPORARY TABLE list(id INT NOT NULL);
DROP PROCEDURE IF EXISTS strings_to_array;
CREATE PROCEDURE strings_to_array(s_str VARCHAR(128), s_split VARCHAR(3))
BEGIN
SET @i = LENGTH(s_str) - LENGTH(REPLACE(s_str, s_split, '')); -- 算出分隔符的总数
SET @left_str = s_str;
WHILE @i > 0 -- 有多少个分隔符就循环多少遍
DO
SET @sub_str = SUBSTR(@left_str, 1, INSTR(@left_str, s_split) - 1); -- 得到分隔符前面的字符串
SET @left_str = SUBSTR(@left_str, LENGTH(@sub_str) + LENGTH(s_split) + 1); -- 得到分隔符后面的字符串
SET @n = TRIM(@sub_str);
INSERT INTO list(id) VALUES(@n);
SET @i = @i - 1;
END WHILE;
SET @n = TRIM(@left_str);
INSERT INTO list(id) VALUES(@n);
END;
CALL strings_to_array('0,1,2,29,7,9,14', ',');
SELECT * FROM list;
DROP TEMPORARY TABLE IF EXISTS list;
```
上述存储过程中,`strings_to_array`过程接收两个参数:`s_str`表示要转换的字符串,`s_split`表示分隔符。该过程首先计算出分隔符的总数,然后通过循环将字符串分割成多个子字符串,并将每个子字符串插入到一个临时表中。最后,查询临时表即可得到转换后的数组。
阅读全文