mysql - SQL 语法错误 1064

标签 mysql sql

我有一个语法错误,我一直试图修复它,但我无法弄清楚。错误表明附近有问题

'SET result = CONCAT(result,charac); END IF; SET indexchar = indexchar+1;'

我正在尝试创建的完整功能:

DELIMITER //
DROP FUNCTION IF EXISTS `alphabet`;
CREATE FUNCTION `alphabet` (serial_number CHAR, name VARCHAR(100)) RETURNS VARCHAR(50) 
DETERMINISTIC
BEGIN
    DECLARE result VARCHAR(40) DEFAULT '';
    DECLARE stringalpha VARCHAR(50) DEFAULT 'abcdefghijklmnopqrstuvwxyz0123456789';
    DECLARE indexchar int DEFAULT 1;
    DECLARE charlength INT;
    DECLARE charac CHAR(1);

    SET charlength = CHAR_LENGTH(stringalpha);

WHILE indexchar <= charlength DO
    SET charac = SUBSTRING(stringalpha,indexchar,1);
    IF (serial_number LIKE CONCAT('%',charac,'%') OR name LIKE CONCAT('%',charac,'%'))
        SET result = CONCAT(result,charac);
    END IF;
    SET indexchar = indexchar+1;
END WHILE

RETURN result;
END //
DELIMITER ;

我尝试编写但没有成功:

SET result = CONCAT('result','charac');

最佳答案

DROP FUNCTION IF EXISTS `alphabet`;
DELIMITER //
CREATE FUNCTION `alphabet` (serial_number CHAR, name VARCHAR(100)) RETURNS VARCHAR(50) 
DETERMINISTIC
BEGIN
    DECLARE result VARCHAR(40) DEFAULT '';
    DECLARE stringalpha VARCHAR(50) DEFAULT 'abcdefghijklmnopqrstuvwxyz0123456789';
    DECLARE indexchar int DEFAULT 1;
    DECLARE charlength INT;
    DECLARE charac CHAR(1);

    SET charlength = CHAR_LENGTH(stringalpha);

WHILE indexchar <= charlength DO
    SET charac = SUBSTRING(stringalpha,indexchar,1);
    IF (serial_number LIKE CONCAT('%',charac,'%') OR name LIKE CONCAT('%',charac,'%')) THEN
        SET result = CONCAT(result,charac);
    END IF;
    SET indexchar = indexchar+1;
END WHILE; -- ********************** missing semi

RETURN result;
END //
DELIMITER ;

缺少THENEND WHILE后缺少分号,顶部分隔符位于错误的行

关于mysql - SQL 语法错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40092652/

相关文章:

mysql - 如何从 MySQL 中的多个表中删除?

php - Bootstrap 3 Typeahead Ajax 搜索使用 php mysql 函数

mysql - 如何从 MySQL 存储过程始终返回空结果集?

php - 文本区域数据未完全插入

mysql - 合并 3 个表的电子邮件字段 n 检查注册用户表中是否存在相同的邮件

sql - PostgreSQL:十进制/数字数据类型的数字字段溢出 - 为什么会出现此错误

php - 更新多行记录

mysql - 如何检查 pdf 在 mysql 中是否存在或相同的 80%?

java - 如何才能为 HQL/SQL 提供更好的 OO 方法?

sql - DB2 SQL 更新表值