Pernyataan Masalah:
Mengira bilangan perkataan dalam pangkalan data MySQL lajur menggunakan ungkapan biasa adalah tugas biasa. Walau bagaimanapun, pendekatan standard menggunakan LENGTH(nama) - LENGTH(REPLACE(nama, ' ', '') 1 gagal apabila berbilang ruang memisahkan perkataan. Soalan ini menyelidiki penyelesaian alternatif yang memanfaatkan kefungsian Regex. Ganti untuk lebih tepat keputusan.
Penyelesaian:
Pangkalan data MySQL menawarkan fungsi REGEXP_REPLACE, yang boleh digunakan sebagai fungsi yang ditentukan pengguna. Fungsi ini menyediakan Regex yang diingini. Gantikan kelakuan untuk mengira perkataan dengan pendekatan ini, pertimbangkan pertanyaan berikut:
SELECT LENGTH(REGEXP_REPLACE(name, '\s+', ' ')) - LENGTH(REGEXP_REPLACE(name, '\s+', '') +1 FROM table
Pertanyaan ini menggantikan berbilang ruang dengan satu. ruang, mengira ruang secara berkesan sebagai pembatas perkataan.
Alternatif Pertimbangan:
Untuk prestasi optimum, adalah disyorkan untuk menghalang ruang putih berganda daripada memasuki pangkalan data Selain itu, jika bilangan perkataan diakses dengan kerap, ia boleh dikira sekali dan disimpan dalam pangkalan data untuk mendapatkan semula yang lebih cepat. .
Atas ialah kandungan terperinci Bagaimanakah Fungsi REGEXP_REPLACE MySQL Mengira Perkataan dengan Tepat dalam Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!