[英]MySQL Error 1064 - 'Define Function' Syntax
我几乎不学习MySQL(从SQLite迁移)。 我正在尝试在MySQL命令行客户端中创建一个自定义函数,但是遇到了无法纠正的错误-无法找到在线答案。 我的第一个功能是这样开始的:
CREATE FUNCTION myDatabase.LCASE_ASCII_VALUE_AT(
unparsedLine VARCHAR(1024),
linePos int
) RETURNS int DETERMINISTIC
return ASCII( LCASE( RIGHT( CHAR_LENGTH(unparsedLine) - linePos + 1) ) );
我收到此错误:
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 ') )' at line 10
关于我的语法出错的任何指针? 我怀疑了这些,但他们没有解决问题:
return ASCII( LCASE( ...
空间)。 DELIMITER $$ [function definition] END $$ DELIMITER ;
业务是强制性的-但这不能解决错误,MySQL文档提供了一个单行函数示例,其中不需要DELIMITER。 (“ hello”函数位于https://dev.mysql.com/doc/refman/5.0/en/create-procedure.html ) 编辑:添加,我正在MySQL命令行客户端中创建此功能。
right
需要两个参数,字符串本身和字符数。 您只给出了字符数。
尝试以下方法:
return ASCII( LCASE( RIGHT( unparsedLine, CHAR_LENGTH(unparsedLine) - linePos + 1) ) );
另外,您可能会发现substr
是一个更好的选择,因为在这种情况下无需计算right
的参数,例如:
return ASCII( LCASE( SUBSTR( unparsedLine, linePos, 1 ) ) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.