Wenn ich eine Funktion in MySQL Query Browser ausführen gibt es Fehlermeldung " " Script-Zeile: 3 Verbindung mit MySQL-Server während der Abfrage verloren ", auch ich kann es nicht fallen lassen. . wenn ich ausführen oder versuchen, es mein Query Browser stecken geblieben drop out wird der Funktionscode unterMySQL-Funktion essen zu viel CPU
gegeben das Argument, dies mag sollte - ('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 Ich werde diese Funktion verwenden, um die Zeichenkette nach Trennzeichen (Komma) zu trennen und das Ergebnis zurückzusenden.
Bitte geben Sie den echten Code ein, den Sie mit c & p verwenden. 'SET temp = REPLACE (str, SUBSTRING (str, 1, L1, '');' ist ein Syntaxfehler. BTW, AFAICT 'temp' ist unnötig - Sie könnten einfach' SET str = REPLACE (...); ' – glglgl
Außerdem bin ich nicht ThinK Ihre Funktion wird in der Lage sein zu tun, was Sie wollen: da es nur eine' varchar' zurückgibt, wandelt es '50,51,52' in' 505152' um - ich denke nicht, dass das ist was willst du ... – glglgl
Was eigentlich sollte deine Funktion tun? – Devart