mySql 中是否有类似于 split() 方法的东西?

2023-12-12

我正在编写一个存储过程,该过程将由标记分隔的字符串作为参数,然后在该过程中为该字符串中的每个项目运行 while 循环。

我在 mysql 文档中没有看到任何可以完成此任务的内容...有没有办法做到这一点?


不幸的是,mysql 不允许函数返回数组或表(据我所知),因此您必须稍微有点笨拙地执行此操作。

这是一个示例存储过程:

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 增加。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mySql 中是否有类似于 split() 方法的东西? 的相关文章

随机推荐