Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie SQL do określania statystyk liczby słów w polu tekstowym

Możliwości obsługi tekstu MySQL nie są wystarczające do tego, czego chcesz. Przechowywana funkcja jest opcją, ale prawdopodobnie będzie powolna. Najlepszym sposobem na przetwarzanie danych w MySQL jest dodanie funkcja zdefiniowana przez użytkownika . Jeśli i tak zamierzasz zbudować nowszą wersję MySQL, możesz również dodać funkcja natywna .

„Właściwym” sposobem jest przetwarzanie danych poza DB, ponieważ DB służą do przechowywania, a nie przetwarzania, a każde intensywne przetwarzanie może zbytnio obciążyć DBMS. Ponadto obliczanie liczby słów poza MySQL ułatwia zmianę definicji tego, co liczy się jako słowo. Co powiesz na przechowywanie liczby słów w bazie danych i aktualizowanie jej, gdy dokument zostanie zmieniony?

Przykładowa zapisana funkcja:

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. Konwertuj tekst na liczbę w zapytaniu MySQL

  2. Czy istnieją wady używania ogólnego varchar(255) dla wszystkich pól tekstowych?

  3. LOAD DATA INFILE łatwo przekonwertować RRRRMMDD na RRRR-MM-DD?

  4. Importowanie zi eksportowanie do plików za pomocą wiersza poleceń MySQL

  5. Jak zainstalować najnowszą wersję MySQL 8 na Debianie 10?