Работейки по превода система, съдържаща в себе си хиляди фрази, трябваше да измисля начин, по който да показвам колко думи има във всяка фраза и съответно колко общо думи има във всеки отделен проект.
За някои от езиците се плаща на външни преводачи, така че според броя думи се определя и сумата, която те ще получат.
Последователно изпълняваме няколко заявки:
Заявка 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) |
Можете да прочетете коментарите тук ако имате нужда от повече информация.