+-

我正在寻找一个存储过程,该存储过程将一个字符串作为参数,该字符串由一个标记分隔,然后在该过程中为该字符串中的每个项目运行一个while循环.
我没有在mysql文档中看到任何可以完成此任务的内容……有没有办法做到这一点?
最佳答案
不幸的是,mysql不允许函数返回数组或表(我知道),所以你必须有点hackily这样做.
这是一个存储过程示例:
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 ;
这将标记您的字符串,并将值插入名为“tokens”的表中,每行一个标记.你应该能够修改它以便很容易地做一些有用的事情.此外,您可能希望将输入长度从200增加.
点击查看更多相关文章
转载注明原文:有什么类似于mySql中的split()方法吗? - 乐贴网