Как да преброим колко думи имаме в поле от базата данни с MySQL query ?

Работейки по превода система, съдържаща в себе си хиляди фрази, трябваше да измисля начин, по който да показвам колко думи има във всяка фраза и съответно колко общо думи има във всеки отделен проект.
За някои от езиците се плаща на външни преводачи, така че според броя думи се определя и сумата, която те ще получат.

Последователно изпълняваме няколко заявки:

Заявка 1:

DELIMITER //

Заявка 2:

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//

Заявка 3:

DELIMITER ;

Ето резултата:

mysql> SELECT sentence, wordcount(sentence) as "Words" from test;
+------------------------------+-------+
| sentence                     | Words |
+------------------------------+-------+
| Hello World                  |     2 |
| Hello World                  |     2 |
| Mary had a little lamb       |     5 |
| Her fleece was white as snow |     6 |
| Everywhere that mary went    |     4 |
| Umm, sheep followed her      |     4 |
+------------------------------+-------+
6 rows in set (0.02 sec)

Можете да прочетете коментарите тук ако имате нужда от повече информация.