Monday, 24 December 2018

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.

0 comments:

Post a Comment