sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo lograr la funcionalidad de initcap en MySQL?

Hace algún tiempo estaba buscando una función initcap/ucfirst incorporada en MySQL, pero desafortunadamente no pude encontrar tales funciones de cadena, así que decidí escribir la mía... gracias al miembro de la comunidad de MySQL que corrigió el error en mi función y lo publicó de nuevo. .

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`initcap`$$

CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8
READS SQL DATA
DETERMINISTIC
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');