#转换已购商品的函数 DELIMITER // #重新定义定界符,因为MySQL默认是用‘;’作为定界符的,但是一个函数中会有多个语句,每个语句结束就会使用‘;’,这就会冲突 CREATE FUNCTION parsePurchasedCommodity(commodity VARCHAR(100)) RETURNS INT #函数可以没有参数,但是必须要有返回值 BEGIN DECLARE temp VARCHAR(100); #存放将3转换成4的值 DECLARE startIndex INT DEFAULT 1; #存放开始的索引 DECLARE tempIndex INT ; #','位置的索引 DECLARE result INT DEFAULT 0; #结果 DECLARE tempValue VARCHAR(10); #截取到的值 IF commodity IS NULL THEN SET result=0; #在这里不能直接return ELSE #将其中的'3'替换成'4' SET temp=REPLACE(commodity,'3','4'); #使用','截取传入的字符串 SET tempIndex=LOCATE(',',temp); WHILE tempindex>0 DO #这里的Do不能省略 SET tempValue=SUBSTRING(temp,startindex,tempIndex-startindex); SET result=result+CAST(tempValue AS SIGNED); #这里将字符转换成数字 SET temp=SUBSTRING(temp,tempIndex+1); SET tempIndex=LOCATE(',',temp); END WHILE; SET result=result+CAST(temp AS SIGNED); END IF; RETURN result; END // DELIMITER ;