#转换已购商品的函数
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 ;