ucwords / capitalize en MySQL

En los foros de MySQL he encontrado esta función en MySQL que hace lo mismo que ucwords() en PHP: transforma un string (en este caso un VARCHAR) convirtiendo a mayúsculas el primer caracter de cada palabra

DELIMITER $$
DROP FUNCTION IF EXISTS `ICap`$$
CREATE FUNCTION `ICap`(mystring varchar(1000))
RETURNS VARCHAR(1000)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE myc, pc CHAR(1);
DECLARE myoutstring VARCHAR(1000) DEFAULT LOWER(mystring);
WHILE i <= CHAR_LENGTH(mystring) DO
SET myc = SUBSTRING(mystring, i, 1);
SET pc = CASE WHEN i = 1 THEN ' ' ELSE SUBSTRING(mystring, i - 1, 1) END;
IF pc IN (' ', '&', '''', '_', '?', ';', ':', '!', ',', '-', '/', '(', '.') THEN
SET myoutstring = INSERT(myoutstring, i, 1, UPPER(myc));
END IF;
SET i = i + 1;
END WHILE;
RETURN myoutstring;
END$$
DELIMITER ;
Gotardo González
Nací en Granada en 1983 pero desde hace un tiempo vivo en tierras extremeñas. Desde hace unos años soy desarrollador de aplicaciones web y actualmente trabajo como freelance.