Mysql 在尝试创建函数时不断出错

标签 mysql function

我正在尝试创建 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/

相关文章:

mysql - 如何对具有与另一个名称表相关的两列外键的表执行 mysql 选择查询

mysql - 具有只读权限时克隆MySQL数据库

mysql - 流行的 MySQL rss 提要

C++ 函数运行超过预期

JavaScript:如何从事件中调用函数

php - mysql_query 中的更新有时返回 null

html链接中的php函数

c++ - 标准库头文件函数原型(prototype)的实现是如何用c++编写的?

Javascript 名称验证

mysql - 过滤掉子查询列的结果