CREATE DEFINER=`root`@`localhost` FUNCTION `const_function_strings`(str varchar(50),s varchar(10)) RETURNS varchar(50) CHARSET utf8
BEGIN
DECLARE strSub varchar(50) default '';
DECLARE startIndex int default 1;
DECLARE len int default 1;
while startIndex<=length(str) do
set len= LOCATE(s,str,startIndex)-startIndex;
if LOCATE(s,str,startIndex)=0 then
set len=length(str)-(startIndex-1);
set startIndex=length(str)+1;
end if;
set strSub=CONCAT(strSub,",",
(select TypeName from types
where
ID=substring(str,startIndex,len)));
if LOCATE(s,str,startIndex)>0 then
set startIndex=LOCATE(s,str,startIndex)+1;
end if;
end while;
set strSub=substring(strSub,2,length(strSub));
RETURN strSub;
END
報錯是:
DECLARE strSub VARCHAR (50) DEFAULT '';
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
uj5u.com熱心網友回復:
DELIMITER $$CREATE DEFINER=`root`@`localhost` FUNCTION `const_function_strings`(str VARCHAR(50),s VARCHAR(10)) RETURNS VARCHAR(50) CHARSET utf8
BEGIN
DECLARE strSub VARCHAR(50) DEFAULT '';
DECLARE startIndex INT DEFAULT 1;
DECLARE len INT DEFAULT 1;
WHILE startIndex<=LENGTH(str) DO
SET len= LOCATE(s,str,startIndex)-startIndex;
IF LOCATE(s,str,startIndex)=0 THEN
SET len=LENGTH(str)-(startIndex-1);
SET startIndex=LENGTH(str)+1;
END IF;
SET strSub=CONCAT(strSub,",",
(SELECT TypeName FROM TYPES
WHERE
ID=SUBSTRING(str,startIndex,len)));
IF LOCATE(s,str,startIndex)>0 THEN
SET startIndex=LOCATE(s,str,startIndex)+1;
END IF;
END WHILE;
SET strSub=SUBSTRING(strSub,2,LENGTH(strSub));
RETURN strSub;
END$$
DELIMITER ;
uj5u.com熱心網友回復:
還是不行啊大哥uj5u.com熱心網友回復:
mysql> delimiter //
mysql> CREATE DEFINER=`root`@`localhost` FUNCTION `const_function_strings`(str varchar(50),s varchar(10)) RETURNS varchar(50) CHARSET utf8
-> BEGIN
-> DECLARE strSub varchar(50) default '';
-> DECLARE startIndex int default 1;
-> DECLARE len int default 1;
-> while startIndex<=length(str) do
-> set len= LOCATE(s,str,startIndex)-startIndex;
-> if LOCATE(s,str,startIndex)=0 then
-> set len=length(str)-(startIndex-1);
-> set startIndex=length(str)+1;
-> end if;
-> set strSub=CONCAT(strSub,",",
-> (select TypeName from types
-> where
-> ID=substring(str,startIndex,len)));
->
-> if LOCATE(s,str,startIndex)>0 then
-> set startIndex=LOCATE(s,str,startIndex)+1;
-> end if;
->
->
-> end while;
-> set strSub=substring(strSub,2,length(strSub));
-> RETURN strSub;
-> END //
delimiter ;Query OK, 0 rows affected, 1 warning (0.04 sec)
mysql> delimiter ;
uj5u.com熱心網友回復:
在哪里執行的,資料庫工具,還是代碼行。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/63893.html
標籤:MySQL
上一篇:MySql強制主鍵為什么不生效
