我有一个语法错误,我一直试图修复它,但我无法弄清楚。错误表明附近有问题
'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 ;
缺少THEN
,END WHILE
后缺少分号,顶部分隔符位于错误的行
关于mysql - SQL 语法错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40092652/