Python MySQLdb自定义函数错误

Python MySQLdb custom function error

我有一个这样定义的自定义函数:

def create_extract_position_type_1(self):

    self.c.execute("""CREATE FUNCTION extract_position_type_1 (f_str VARCHAR)

                        RETURNS VARCHAR

                        BEGIN

                        DECLARE pstr VARCHAR(1600)

                        SET pstr = SUBSTRING(f_str, "|", 4)

                        RETURN pstr

                        END""")

当我运行这个函数时我得到这个错误:

_mysql_exceptions.ProgrammingError: (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 ')\n\n\t\t\t\t\t\t\tRETURNS VARCHAR\n\n\t\t\t\t\t\t    BEGIN\n\n\t\t\t\t\t\t    DECLARE pstr VARCHAR(1600)' at line 1")

我做错了什么?

SQL 的语法需要更正。 VARCHAR 应该有长度限制

试试这个

DELIMITER $$
CREATE FUNCTION extract_position_type_1(f_str VARCHAR(500) ) RETURNS VARCHAR(500)
BEGIN
    DECLARE pstr VARCHAR(1600);
    SET pstr = SUBSTRING(f_str, '|', 4);
    RETURN pstr;
END