Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan SQL untuk menentukan statistik jumlah kata dari bidang teks

Kemampuan penanganan teks MySQL tidak cukup baik untuk apa yang Anda inginkan. Fungsi tersimpan adalah opsi, tetapi mungkin akan lambat. Taruhan terbaik Anda untuk memproses data dalam MySQL adalah dengan menambahkan fungsi yang ditentukan pengguna . Jika Anda tetap akan membuat versi MySQL yang lebih baru, Anda juga dapat menambahkan fungsi asli .

Cara yang "benar" adalah memproses data di luar DB karena DB adalah untuk penyimpanan, bukan pemrosesan, dan pemrosesan berat apa pun dapat membebani DBMS terlalu banyak. Selain itu, menghitung jumlah kata di luar MySQL memudahkan untuk mengubah definisi dari apa yang dianggap sebagai kata. Bagaimana dengan menyimpan jumlah kata dalam DB dan memperbaruinya saat dokumen diubah?

Contoh fungsi tersimpan:

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. Bagaimana Mengonversi Tanggal UTC Ke Zona Waktu Lokal di MySql Select Query

  2. Menggunakan Oracle JDeveloper Snippets dengan MySQL

  3. Adakah cara untuk memilih tanpa menyebabkan penguncian di MySQL?

  4. Bagaimana cara menyimpan uuid sebagai nomor?

  5. JSON_STORAGE_FREE() – Cari Tahu Berapa Banyak Ruang Penyimpanan yang Dikosongkan Setelah Pembaruan Dokumen JSON di MySQL