Carian Tidak Sensitif Diakritik MySQL
Apabila menggunakan perkataan Sepanyol yang mengandungi aksen, mungkin sukar untuk melakukan pertanyaan carian sambil mengira tanda diakritik . Artikel ini menyediakan penyelesaian untuk melaksanakan carian tidak sensitif diakritik dalam pangkalan data MySQL menggunakan gabungan set aksara dan himpunan.
Contoh yang disediakan:
$result = mysql_query("SELECT * FROM $lookuptable WHERE disabled = '0' AND name LIKE '%$q%' OR productCode LIKE '%$q%' LIMIT $sugglimit");
tidak mengambil kira perbezaan diakritik dan mungkin kecualikan hasil carian yang mengandungi perkataan seperti "lápiz" apabila mencari "lapiz."
Untuk mencapai diakritik ketidakpekaan, seseorang boleh menggunakan perintah MySQL SET NAMES untuk menentukan set aksara tertentu dan penyusunan untuk sambungan pangkalan data. Dengan menetapkan set aksara kepada latin1 dan himpunan kepada yang tidak sensitif aksen, pertanyaan boleh memadankan kedua-dua perkataan dengan dan tanpa aksen.
Contoh:
SET NAMES latin1; SELECT 'lápiz' LIKE 'lapiz';
Pertanyaan ini akan mengembalikan 0, menunjukkan bahawa "lápiz" dan "lapiz" tidak sama.
Dengan bertukar kepada set aksara utf8:
SET NAMES utf8; SELECT 'lápiz' LIKE 'lapiz';
Pertanyaan akan mengembalikan 1, menunjukkan bahawa carian kini tidak sensitif diakritik.
Untuk menyatakannya secara eksplisit corak harus sepadan dengan rentetan UTF-8, seseorang boleh menggunakan _utf8 awalan:
SET NAMES latin1; SELECT _utf8'lápiz' LIKE _utf8'lapiz';
Dalam contoh ini, pertanyaan akan mengembalikan 1, mengesahkan ketidakpekaan diakritik walaupun secara eksplisit menggunakan set aksara latin1.
Untuk pemahaman lanjut, rujuk dokumentasi MySQL tentang Character Tetapkan Sokongan.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Carian Tidak Sensitif Diakritik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!