Sometime back I was looking for a built-in initcap/ucfirst
function in MySQL but unfortunately couldn't find such string
functions so decided to write my own.. thanks to the MySQL
community member who corrected the bug in my function & posted it
back.
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('umesh kumar shastry');
Umesh Kumar Shastry
select initcap('ashutosh s');
Ashutosh S
select initcap('rahul giri');
Rahul Giri
select initcap('alam seraj');
Alam Seraj
select initcap('atul kaushik');
Atul Kaushik
7TKU66CE8V5W
Jun
17
2009