这是我的功能
CREATE FUNCTION CAP_FIRST (input VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE len INT;
DECLARE i INT;
SET len = CHAR_LENGTH(input);
SET input = LOWER(input);
SET i = 0;
WHILE (i < len) DO
IF (MID(input,i,1) = ' ' OR i = 0) THEN
IF (i < len) THEN
SET input = CONCAT(
LEFT(input,i),
UPPER(MID(input,i + 1,1)),
RIGHT(input,len - i - 1)
);
END IF;
END IF;
SET i = i + 1;
END WHILE;
RETURN input;
END;
我正在使用这个函数获得每个单词的第一个字母大写,但它给了我一个错误。我搜索了解决方案,我找到了一些解决方案,但他们没有工作。
MySQL 说:文档
#1064 - 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 8
答案 0 :(得分:0)
缺少分号:
SET i = i + 1;
END WHILE;
RETURN input;
答案 1 :(得分:0)
嘿,我找到了解决方案这是一个正常运行的新代码。
DELIMITER $$
CREATE FUNCTION `db_name`.`Ucfirst`(`word` VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
DECLARE len INT;
DECLARE i INT;
SET len = CHAR_LENGTH(word);
SET word = LOWER(word);
SET i = 0;
WHILE (i < len) DO
IF (MID(word,i,1) = ' ' OR i = 0) THEN
IF (i < len) THEN
SET word = CONCAT(
LEFT(word,i),
UPPER(MID(word,i + 1,1)),
RIGHT(word,len - i - 1)
);
END IF;
END IF;
SET i = i + 1;
END WHILE;
RETURN word;
END$$
DELIMITER ;