我正在尝试创建2个MySQL函数I found here,我将展示较短的函数:
CREATE FUNCTION levenshtein_ratio( s1 VARCHAR(255), s2 VARCHAR(255) )
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE s1_len, s2_len, max_len INT;
SET s1_len = LENGTH(s1), s2_len = LENGTH(s2);
IF s1_len > s2_len THEN
SET max_len = s1_len;
ELSE
SET max_len = s2_len;
END IF;
RETURN ROUND((1 - LEVENSHTEIN(s1, s2) / max_len) * 100);
END;
他们都给我同样的错误:
#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第5行的''附近使用正确的语法
另一个函数的第5行看起来像这样:
DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;
我抬头error 1064找到了这个:
错误:1064 SQLSTATE:42000(ER_PARSE_ERROR)
消息:%s在%d附近的'%s'附近
我不知道这意味着什么。
我无法弄清楚触发错误的原因是什么?
答案 0 :(得分:3)
因为您在函数体内使用分号,所以需要为函数的创建指定不同的分隔符。
delimiter //
CREATE FUNCTION levenshtein_ratio( s1 VARCHAR(255), s2 VARCHAR(255) )
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE s1_len, s2_len, max_len INT;
SET s1_len = LENGTH(s1), s2_len = LENGTH(s2);
IF s1_len > s2_len THEN
SET max_len = s1_len;
ELSE
SET max_len = s2_len;
END IF;
RETURN ROUND((1 - LEVENSHTEIN(s1, s2) / max_len) * 100);
END//