Mengekstrak Nth Word dan Mengira Kejadian Word dalam MySQL
Persoalan yang dikemukakan berkenaan dengan kemungkinan pertanyaan MySQL yang boleh mengekstrak perkataan tertentu daripada rentetan teks dan kira kejadiannya. Contoh yang disediakan bertujuan untuk mengekstrak perkataan kedua daripada teks.
Penyelesaian Pertanyaan untuk Postgres
Walaupun MySQL tidak menyokong pengekstrakan padanan regeks langsung, pangkalan data lain seperti PostgreSQL memberikan pendekatan yang lebih mudah. Dalam PostgreSQL, pertanyaan berikut boleh digunakan:
SELECT word, count(*) FROM ( SELECT SPLIT_PART(text, ' ', 2) AS word FROM (SELECT 'THIS IS A TEST' AS text) AS tmp ) AS words GROUP BY word;
Pertanyaan ini menggunakan fungsi SPLIT_PART untuk memisahkan teks kepada perkataan individu berdasarkan ruang dan mengekstrak perkataan kedua. Jadual yang terhasil mengumpulkan perkataan mengikut kejadiannya.
Penyelesaian untuk MySQL
Untuk MySQL, pendekatan berbeza diperlukan kerana pengekstrakan regex langsung tidak disokong. Satu penyelesaian melibatkan penggunaan gabungan subrentetan dan fungsi locate:
SELECT SUBSTRING( text, LOCATE(' ', text) + CHAR_LENGTH(' '), LOCATE(' ', text, ( LOCATE(' ', text) + 1 ) - ( LOCATE(' ', text) + CHAR_LENGTH(' ') ) ) AS word, count(*) FROM (SELECT 'THIS IS A TEST' AS text) AS tmp GROUP BY word;
Pertanyaan ini mencari kedudukan ruang pertama dalam teks, yang akan berada selepas perkataan pertama. Ia kemudian menambah panjang ruang pada kedudukan ini untuk memulakan pengekstrakan perkataan kedua. Panjang subrentetan yang diekstrak dikira dengan mencari ruang seterusnya dan menolak kedudukan permulaan daripadanya.
Kaedah ini memerlukan pelarasan untuk mengekstrak perkataan ke-n yang berbeza.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekstrak Word Nth dan Mengira Kejadiannya dalam MySQL dan PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!