sql >> Database >  >> RDS >> Mysql

SQL gebruiken om statistieken van het aantal woorden van een tekstveld te bepalen

De tekstverwerkingsmogelijkheden van MySQL zijn niet goed genoeg voor wat je wilt. Een opgeslagen functie is een optie, maar zal waarschijnlijk traag zijn. U kunt de gegevens het beste in MySQL verwerken door een toe te voegen door de gebruiker gedefinieerde functie . Als je toch een nieuwere versie van MySQL gaat bouwen, kun je ook een native functie .

De "juiste" manier is om de gegevens buiten de DB te verwerken, aangezien DB's voor opslag zijn, niet voor verwerking, en elke zware verwerking kan de DBMS te zwaar belasten. Bovendien maakt het berekenen van het aantal woorden buiten MySQL het gemakkelijker om de definitie te wijzigen van wat als een woord telt. Hoe zit het met het opslaan van het aantal woorden in de DB en het bijwerken wanneer een document wordt gewijzigd?

Voorbeeld opgeslagen functie:

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. Breid EM Grid Control uit naar nieuwe nodes

  2. Schema Switch-A-Roo:deel 2

  3. Voorbeelden van het converteren van 'time' naar 'datetime' in SQL Server (T-SQL)

  4. Verwijderen uit twee tabellen in één query