1
下面是大写字母中每个单词首字母的MySQL函数。MySQL - 每个单词的首字母大写
USE `db`$$
DROP FUNCTION IF EXISTS `UC_Words`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `UC_Words`(str VARCHAR(255)) RETURNS VARCHAR(255) CHARSET latin1
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
DECLARE c CHAR(1);
DECLARE s VARCHAR(255);
DECLARE i INT DEFAULT 1;
DECLARE BOOL INT DEFAULT 1;
DECLARE punct CHAR(17) DEFAULT '()[]{},[email protected];:?/';
SET s = LCASE(str);
WHILE i < LENGTH(str) DO
BEGIN
SET c = SUBSTRING(s, i, 1);
IF LOCATE(c, punct) > 0 THEN
SET BOOL = 1;
ELSEIF BOOL=1 THEN
BEGIN
IF c >= 'a' AND c <= 'z' THEN
BEGIN
SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
SET BOOL = 0;
END;
ELSEIF c >= '0' AND c <= '9' THEN
SET BOOL = 0;
END IF;
END;
END IF;
SET i = i+1;
END;
END WHILE;
RETURN s;
END$$
DELIMITER ;
它是所有字符串工作正常。但是如果我提供字符串“M R E”,那么它给出“M R e”输出。
PLZ建议。