Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengekstrak Word ke-n dan Mengira Kejadian Perkataan dalam MySQL?

Bagaimana untuk Mengekstrak Word ke-n dan Mengira Kejadian Perkataan dalam MySQL?

DDD
Lepaskan: 2024-12-08 03:32:11
asal
926 orang telah melayarinya

How to Extract the nth Word and Count Word Occurrences in MySQL?

Mengekstrak Word ke-n dan Mengira Kejadian Perkataan dalam Rentetan MySQL

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.

Pengekstrakan Perkataan ke-1

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(' ') )
)
Salin selepas log masuk

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.

Kiraan Kejadian Perkataan

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan