MySQL Function to Capitalize the First Letter of Words in a String

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.

Share

Related posts

1 comment

  1. François J.

    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/

    Reply

Leave a comment