繁体   English   中英

MySQL错误1064-“定义功能”语法

[英]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

关于我的语法出错的任何指针? 我怀疑了这些,但他们没有解决问题:

  1. 也许MySQL不喜欢return ASCII( LCASE( ...空间)。
  2. 也许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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM