1

我想创建一个像下面这样的简单函数来完成一项简单的任务:

DELIMITER $$
CREATE FUNCTION f(key TEXT, str TEXT) RETURNS INT
BEGIN
    IF LOCATE(key, str) > 0 THEN
        RETURN 1;
    ELSE
        RETURN 0;
    END IF;
END $$
DELIMITER ;

但我得到一个错误:

ERROR 1064 (42000): 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 'key T
EXT, str TEXT) RETURNS INT
BEGIN
    IF LOCATE(key, str) > 0 THEN
        R' at line 1

有什么问题?

4

2 回答 2

3

该函数存在语法错误,因为key它是 MySql 中的保留字。解决方案:重命名参数或放入key反引号中,如下所示:

CREATE FUNCTION f(`key` TEXT, str TEXT) RETURNS INT
于 2013-01-28T18:41:04.857 回答
1

key是mysql中的一个关键字,放在`之间或者使用不同的名字。

于 2013-01-28T18:40:44.407 回答