用MySQL存储过程分割字符串

Liang_ZhiQiang 2010-11-29 01:55:08
DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`func_split_Total`$$

CREATE FUNCTION `func_split_Total` (f_string varchar(1000),f_delimiter varchar(5)) RETURNS int(11)

BEGIN
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
END$$
DELIMITER;
-------------------------------------------------------------------------
DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`func_split`$$

CREATE FUNCTION `test`.`func_split`
(
f_string varchar(1000),
f_delimiter varchar(5),
f_order int
) RETURNS varchar(255) CHARSET utf8
BEGIN

declare result varchar(255) default '';

set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));

return result;

END$$

DELIMITER ;
-------------------------------------------------------------------------
DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`INSERTTREE`$$

CREATE PROCEDURE `test`.`INSERTTREE`
(
IN f_string varchar(1000),
IN f_delimiter varchar(5)
)
BEGIN

declare count int default 0;

declare i int default 0;

set count = func_split_Total(f_string, f_delimiter);

DROP TABLE IF EXISTS `test`.`tmp_table`;

create temporary table `test`.`tmp_table`(`field` varchar(128)) DEFAULT CHARSET=utf8;

while i < count

do

set i = i + 1;

select func_split(f_string, f_delimiter, i);

#insert into `test`.`tmp_table`(`field`) values (func_split(f_string, f_delimiter, i));

end while;

END$$

DELIMITER ;
...全文
138 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoxingyu 2010-11-29
  • 打赏
  • 举报
回复
GOOD。
技术重在分享,顶楼主。
wwwwb 2010-11-29
  • 打赏
  • 举报
回复
用临时表+SQL语句也可以拆分
lxq19851204 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
楼主是分享自己成功的代码?
[/Quote]
ACMAIN_CHM 2010-11-29
  • 打赏
  • 举报
回复
楼主是分享自己成功的代码?
Liang_ZhiQiang 2010-11-29
  • 打赏
  • 举报
回复


俺是在家里没写完,贴上来到公司继续改。
这里面创建临时表有点问题。

56,806

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧