我正在尝试创建 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 - 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 5
另一个函数的第 5 行如下所示:
DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;
我查了一下error 1064并发现了这个:
Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR)
Message: %s near '%s' at line %d
我不知道这意味着什么。
我无法弄清楚是什么触发了错误?
最佳答案
由于您在函数体内使用分号,因此需要为函数的创建指定不同的分隔符。
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//
关于Mysql 在尝试创建函数时不断出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749151/