Irgendwann wieder war ich auf der Suche nach einer eingebauten initcap/ucfirst-Funktion in MySQL, aber konnte leider nicht finden, so string-Funktionen so entschieden, meine eigenen zu schreiben .. Dank der MySQL Community-Mitglied, der den Fehler in meiner Funktion korrigiert & hat es zurückgeschickt.
DELIMITER $$
DROP FUNCTION IF EXISTS `test`.`initcap`$$
CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8
BEGIN
SET @str='';
SET @l_str='';
WHILE x REGEXP ' ' DO
SELECT SUBSTRING_INDEX(x, ' ', 1) INTO @l_str;
SELECT SUBSTRING(x, LOCATE(' ', x)+1) INTO x;
SELECT CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(@l_str,1,1)),LOWER(SUBSTRING(@l_str,2)))) INTO @str;
END WHILE;
RETURN LTRIM(CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(x,1,1)),LOWER(SUBSTRING(x,2)))));
END$$
DELIMITER ;
Usage:
select initcap('This is test string');
Siehe die Kommentare auf der [Dokumentationsseite] (http://dev.mysql.com/doc/refman/5.1/en/string-functions.html) für String-Funktionen. –