Dalam bidang pertanyaan pangkalan data, mengekstrak elemen teks tertentu daripada rentetan tertentu boleh menjadi keperluan biasa . MySQL, walaupun keupayaan SQLnya yang teguh, tidak mempunyai sokongan asli untuk mengekstrak bahagian teks secara langsung yang sepadan dengan ungkapan biasa.
Untuk mengekstrak perkataan ke-n daripada rentetan MySQL, kami boleh memanfaatkan SUBSTRING dan LOCATE fungsi. SUBSTRING membolehkan kami mengekstrak bahagian tertentu rentetan, manakala LOCATE mencari kejadian pertama subrentetan yang ditentukan.
Andaikan kita ingin mengekstrak perkataan kedua daripada rentetan "Ini adalah ujian." Contoh kod berikut menunjukkan perkara ini:
SUBSTRING( sentence, LOCATE(' ', sentence) + CHAR_LENGTH(' '), LOCATE(' ', sentence, ( LOCATE(' ', sentence) + 1 ) - ( LOCATE(' ', sentence) + CHAR_LENGTH(' ') ) )
Kod ini mula-mula mengenal pasti kedudukan aksara ruang pertama menggunakan LOCATE. Ia kemudian menambah panjang aksara ruang untuk beralih ke permulaan perkataan kedua. Akhir sekali, ia mencari aksara ruang seterusnya, mengira panjangnya dan menolaknya untuk mendapatkan panjang yang sesuai untuk SUBSTRING.
Untuk mengira kejadian perkataan dalam rentetan MySQL, GROUP BY klausa digunakan. Katakan kita mempunyai jadual yang mengandungi lajur bernama "teks" dengan pelbagai entri teks. Pertanyaan berikut akan mengira kejadian setiap perkataan dalam lajur "teks":
SELECT word, COUNT(*) FROM ( SELECT sentence, SUBSTRING_INDEX(sentence, ' ', occurrence) AS word FROM ( SELECT sentence, ROW_NUMBER() OVER (PARTITION BY sentence ORDER BY LOCATE(' ', sentence)) AS occurrence FROM table_name ) t ) subquery GROUP BY word
Pertanyaan ini menggunakan subkueri untuk mengekstrak setiap perkataan daripada ayat, memberikannya kepada lajur "perkataan". ROW_NUMBER digunakan untuk menetapkan nombor kejadian kepada setiap perkataan dalam ayat, memastikan setiap perkataan mempunyai nilai kejadian yang unik. Pertanyaan luar kemudian dikumpulkan mengikut "perkataan" yang diekstrak untuk mengira kejadiannya.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Word ke-n dan Mengira Kejadian Perkataan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!