Когда я выполняю функцию в MySQL Query Browser, она выдает сообщение об ошибке « « Строка сценария: 3 Потерянное соединение с сервером MySQL во время запроса », даже я не могу его потерять. . когда я выполнение или пытаюсь бросить его из моего запроса браузера застрял код функции приведен нижеФункция MySQL слишком много стоит CPU
аргумент хотел это - ('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 ;
I Я буду использовать эту функцию для разделения строки разделителем (запятой) и вернуть мне результат.
Пожалуйста, разместите реальный код, который вы используете с помощью c & p. 'SET temp = REPLACE (str, SUBSTRING (str, 1, L1, '');' является синтаксической ошибкой. BTW, AFAICT 'temp' не требуется - вы можете просто выполнить SET SET = REPLACE (...); '. – glglgl
Кроме того, я не хочу, чтобы ваша функция могла делать то, что вы хотите: поскольку она возвращает только' varchar', она преобразует '50,51,52' в' 505152' - я не думаю, что это что вы хотите ... – glglgl
Что на самом деле должна делать ваша функция? – Devart