MySQL Capitalize Function

I wrote a little MySQL function to capitalize the first letter of every word in a string. I thought I’d share since I wasn’t able to google for it.

CREATE FUNCTION CAP_FIRST (input VARCHAR(255))

RETURNS VARCHAR(255)

DETERMINISTIC

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;


So running the following code...

SELECT CAP_FIRST(
	'this is totally like   @ TEST 1 right!' 
)

Returns the string "This Is Totally Like @ Test 1 Right!"

I would rather have regex'd it, but I couldn't find any sort of regex replace function in the docs.