sql >> Database teknologi >  >> RDS >> Mysql

Brug af SQL til at bestemme ordtællingsstatistikker for et tekstfelt

Teksthåndteringsmulighederne i MySQL er ikke gode nok til det, du ønsker. En lagret funktion er en mulighed, men vil sandsynligvis være langsom. Dit bedste bud på at behandle dataene i MySQL er at tilføje en brugerdefineret funktion . Hvis du alligevel vil bygge en nyere version af MySQL, kan du også tilføje en native funktion .

Den "korrekte" måde er at behandle data uden for DB'en, da DB'er er til lagring, ikke behandling, og enhver tung behandling kan belaste DBMS'et for meget. Derudover gør beregning af ordantallet uden for MySQL det nemmere at ændre definitionen af, hvad der tæller som et ord. Hvad med at gemme ordantallet i DB'en og opdatere det, når et dokument ændres?

Eksempel på gemt funktion:

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. Er der nogen forskel mellem DateTime i c# og DateTime i SQL server?

  2. Sådan får du adgang til PhpMyAdmin uden cPanel-login

  3. Kopier nogle få af kolonnerne i en csv-fil til en tabel

  4. Sådan eksporteres forespørgselsresultater til en CSV-fil i SQL Developer (Oracle)