The below MySQL function will show how to capitalize first letter of each word in a string.
DELIMITER $$ CREATE FUNCTION `test`.`initcap`(input VARCHAR(255)) RETURNS VARCHAR(255) BEGIN DECLARE len INT; DECLARE i INT; SET len = CHAR_LENGTH(input); SET input = LOWER(input); SET i = 0; WHILE (i < len) DO IF (MID(input,i,1) = ' ' OR i = 0) THEN IF (i < len) THEN SET input = CONCAT( LEFT(input,i), UPPER(MID(input,i + 1,1)), RIGHT(input,len - i - 1) ); END IF; END IF; SET i = i + 1; END WHILE; RETURN input; END$$ DELIMITER ;
Test 1
SELECT initcap('This is test string')
Output
This Is Test String
Test 2
SELECT initcap('UNITED states Of AmERIca')
Output
United States Of America
Thanks for reading.
Thank you very much for this function. I was looking for a MySQL replacement to PostgreSQL’s built-in INITCAP() function and your solution works great!
This is for the Convert Names To Titlecase plugin for RosarioSIS:
https://gitlab.com/francoisjacquet/Convert_Names_To_Titlecase/