mysql - 计算字母数

Gra*_*ham 5 mysql

谁能告诉我如何计算 MySQL 中字符串中的字母?

例如:

SELECT numberOfLetters('abc123 def')
Run Code Online (Sandbox Code Playgroud)

将返回 6

我所说的字母是指 AZ 和 az。

numberOfLetters 当然不是有效的 SQL,但它说明了我想要做的事情。

我使用的MySQL版本是5.5.27

eis*_*erg 3

你将需要一个函数:

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 ;
Run Code Online (Sandbox Code Playgroud)

然后调用:

SELECT numberOfLetters('abc123 def');
Run Code Online (Sandbox Code Playgroud)