当我在MySQL Query Browser中执行一个函数时,它会给出错误消息,这是“ “脚本行:3在查询期间丢失了与MySQL服务器的连接”,即使我不能删除它。当我正在执行或试图将其删除时,我的查询浏览器卡住了。功能代码如下:
论证应该是这样的 - ('52,53,50')
DELIMITER $$
DROP FUNCTION IF EXISTS `split_string` $$
CREATE FUNCTION `split_string`(sStrMain VARCHAR(255)) RETURNS varchar(255) CHARSET latin1
BEGIN
DECLARE n,l INT DEFAULT 0;
DECLARE L1,str,temp,L2,res,Final_res VARCHAR(255);
SET str = sStrMain;
WHILE str !='' DO
SET L1 = SUBSTRING(str,1,LOCATE(',',str)-1);
SET res = lookup_code(L1);
SET Final_res = CONCAT_WS(',',Final_res,res);
SET temp = REPLACE(str,SUBSTRING(str,1,L1,'');
SET str = temp;
SET temp = '';
SET n = n + 1;
END WHILE;
RETURN Final_res;
END $$
DELIMITER ;
我将使用此函数按分隔符(逗号)拆分字符串并返回结果。
答案 0 :(得分:1)
尝试此拆分文本程序 -
CREATE PROCEDURE split_string(sStrMain VARCHAR(255))
BEGIN
SET @strLen := 0;
SET @i := 1;
WHILE @strLen < LENGTH(sStrMain) DO
SET @str = SUBSTRING_INDEX(sStrMain, ',', @i);
SET @strLen = LENGTH(@str);
SET @i = @i + 1;
SET @res = SUBSTRING_INDEX(@str, ',', -1);
SELECT @res; -- Show a value, call your function here
END WHILE;
END