mysql - mySQL 用户定义函数中 set 命令的正确语法是什么?

标签 mysql function syntax user-defined-functions

尝试在 mySQL 5.1 中创建函数时收到以下错误:

错误代码:1064 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 25 行的 '' 附近使用的正确语法 (耗时 0 毫秒)

这是我的代码:

DELIMITER $$  

CREATE
    FUNCTION removeMethodAndBackslash(input VARCHAR(40))
    RETURNS VARCHAR(20)
    BEGIN

    DECLARE loginName VARCHAR(40);
    SET loginName = input;

    IF SUBSTRING(loginName,7) LIKE '\b%' THEN
        SET loginName = 'b' + SUBSTRING(input,8);

    ELSE IF SUBSTRING(loginName,7) LIKE '\n%' THEN
        SET loginName = 'n' + SUBSTRING(input,8);

    ELSE IF SUBSTRING(loginName,7) LIKE '\t%' THEN
        SET loginName = 't' + SUBSTRING(input,8);

    ELSE IF SUBSTRING(loginName,7) LIKE '\r%' THEN
        SET loginName = 'r' + SUBSTRING(input,8);

    ELSE
        SET loginName = SUBSTRING(input,7);

    RETURN loginName;

END $$

DELIMITER ;

我研究语法有一段时间了,我确信它是我忽略的一个非常小的细节。任何帮助将不胜感激。

最佳答案

试试这个 -

DELIMITER $$  

CREATE
    FUNCTION removeMethodAndBackslash(input VARCHAR(40))
    RETURNS VARCHAR(20)
    BEGIN

    DECLARE loginName VARCHAR(40);
    SET loginName = input;

    IF SUBSTRING(loginName,7) LIKE '\b%' THEN
        SET loginName = 'b' + SUBSTRING(input,8);

    ELSEIF SUBSTRING(loginName,7) LIKE '\n%' THEN
        SET loginName = 'n' + SUBSTRING(input,8);

    ELSEIF SUBSTRING(loginName,7) LIKE '\t%' THEN
        SET loginName = 't' + SUBSTRING(input,8);

    ELSEIF SUBSTRING(loginName,7) LIKE '\r%' THEN
        SET loginName = 'r' + SUBSTRING(input,8);

    ELSE
        SET loginName = SUBSTRING(input,7);
    END IF;

    RETURN loginName;

END $$

DELIMITER ;

关于mysql - mySQL 用户定义函数中 set 命令的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552711/

相关文章:

mysql - 如何在mysql的列中输入多值 float

Python:通过名称和 kwargs 传递参数

语法问题 - Razor MVC4

ruby-on-rails - Rails 中的 "Virtual Relationships"

mongodb - 如何查询嵌套对象?

mysql - MySQL 中的关系型数据库

php - 如何在 SQL 的 where 子句中使用数组值

MySQL 编码问题 - 从 windows 到 linux 的结果不同

algorithm - 输入的微小变化总是会导致输出发生较大变化的函数

函数后的 JavaScript 空间