Thật không may, mysql không cho phép các hàm trả về mảng hoặc bảng (mà tôi biết), vì vậy bạn phải làm điều này một cách khó khăn.
Đây là một proc mẫu được lưu trữ:
DELIMITER $$
create function splitter_count (str varchar(200), delim char(1)) returns int
return (length(replace(str, delim, concat(delim, ' '))) - length(str)) $$
CREATE PROCEDURE tokenize (str varchar(200), delim char(1))
BEGIN
DECLARE i INT DEFAULT 0;
create table tokens(val varchar(50));
WHILE i <= splitter_count(str, delim) DO
insert into tokens(val) select(substring_index(SUBSTRING_INDEX(str, delim, i+1), delim, -1));
SET i = i + 1;
END WHILE;
END $$
DELIMITER ;
Điều này sẽ mã hóa chuỗi của bạn và chèn các giá trị vào một bảng được gọi là "mã thông báo", một mã thông báo trên mỗi hàng. Bạn sẽ có thể sửa đổi nó để làm điều gì đó hữu ích một cách dễ dàng. Ngoài ra, bạn có thể muốn tăng độ dài đầu vào từ 200.