+-
有什么类似于mySql中的split()方法吗?
我正在寻找一个存储过程,该存储过程将一个字符串作为参数,该字符串由一个标记分隔,然后在该过程中为该字符串中的每个项目运行一个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()方法吗? - 乐贴网