mysql - count letters

mysql

Solution

You will need a function:

DROP FUNCTION IF EXISTS numberOfLetters;

DELIMITER //

CREATE FUNCTION numberOfLetters(s VARCHAR(255)) RETURNS INT DETERMINISTIC NO SQL
BEGIN
    DECLARE c INT;
    DECLARE r INT DEFAULT 0;
    DECLARE n INT DEFAULT LENGTH(s);
    DECLARE i INT DEFAULT 1;

    WHILE i <= n DO
        SET c = ASCII(SUBSTRING(s, i, 1));
        IF (c >= 65 AND c <= 90) OR (c >= 97 AND c <= 122) THEN
            SET r = r + 1;
        END IF;
        SET i = i + 1;
    END WHILE;

    RETURN r;
END//

DELIMITER ;

And then call:

SELECT numberOfLetters('abc123 def');

Problem

Can anyone tell me how to count the letters in a string in MySQL? For example: ``` SELECT numberOfLetters('abc123 def') ``` would return 6 By letter, I mean A-Z and a-z. numberOfLetters is not valid SQL of course, but it illustrates what I am trying to do. The version of MySQL that I'm using is 5.5.27

Original source