0
當我在MySQL查詢瀏覽器中執行一個函數時,它會給出錯誤消息「 」腳本行: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 ;
我打算使用此功能按分隔符(逗號)分割字符串並將結果返回給我。
請發佈您在c&p中使用的真實代碼。 'SET temp = REPLACE(str,SUBSTRING(str,1,L1,'');'是一個語法錯誤,BTW,AFAICT'temp'是不必要的 - 你可以'SET str = REPLACE(...) '。 – glglgl 2012-04-12 05:49:29
另外,我不會縮小你的函數將能夠做你想要的:因爲它只返回一個'varchar',它將'50,51,52'轉換爲'505152' - 我不認爲這是你想要什麼... – glglgl 2012-04-12 05:51:10
你的函數應該做些什麼? – Devart 2012-04-12 06:49:53