Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на SQL за определяне на статистиката за броя на думите в текстово поле

Възможностите за обработка на текст на MySQL не са достатъчно добри за това, което искате. Съхранената функция е опция, но вероятно ще бъде бавна. Най-добрият ви залог за обработка на данните в MySQL е да добавите дефинирана от потребителя функция . Ако все пак ще създадете по-нова версия на MySQL, можете също да добавите родна функция .

"Правилният" начин е да се обработват данните извън DB, тъй като DBs са за съхранение, а не за обработка и всяка тежка обработка може да натовари твърде голямо натоварване на DBMS. Освен това, изчисляването на броя на думите извън MySQL улеснява промяната на дефиницията на това, което се брои като дума. Какво ще кажете да съхранявате броя на думите в DB и да го актуализирате, когато документ се промени?

Примерна съхранена функция:

DELIMITER $$
CREATE FUNCTION wordcount(str LONGTEXT)
       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);
    SET idx = 1;
    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 ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Остатъкът в PostgreSQL, MS SQL Server, MySQL и SQLite

  2. Генериране на поредица от дати

  3. Как да разберете кога е стартиран MySQL/MariaDB сървър

  4. Как да покажа съпоставянето на колона в MySQL

  5. Преобразувайте Unix timestamp в четлива от човека дата с помощта на MySQL