MySQL的文本处理能力不足以满足您的需求。存储的函数是一个选项,但可能会很慢。在MySQL中处理数据的最佳方法是添加user defined function。如果你打算建立一个更新版本的MySQL,你也可以添加一个native function。
“正确”的方法是处理数据库外部的数据,因为数据库用于存储,而不是处理,任何繁重的处理可能会给数据库管理系统带来太多的负载。此外,计算MySQL以外的字数可以更容易地改变什么算作单词的定义。如何将字数存储在数据库中并在更改文档时进行更新?
实例存储功能:
DELIMITER $$
CREATE FUNCTION wordcount(str TEXT)
RETURNS INT
DETERMINISTIC
SQL SECURITY INVOKER
NO SQL
BEGIN
DECLARE wordCnt, idx, maxIdx INT DEFAULT 0;
DECLARE currChar, prevChar BOOL DEFAULT 0;
SET maxIdx=char_length(str);
WHILE idx < maxIdx DO
SET currChar=SUBSTRING(str, idx, 1) RLIKE '[[:alnum:]]';
IF NOT prevChar AND currChar THEN
SET wordCnt=wordCnt+1;
END IF;
SET prevChar=currChar;
SET idx=idx+1;
END WHILE;
RETURN wordCnt;
END
$$
DELIMITER ;