Queries MySQL: Case Sensitivity Conundrum
Apabila bekerja dengan pertanyaan MySQL, adalah penting untuk mempertimbangkan kepekaan huruf besar untuk memastikan hasil carian yang tepat. Walau bagaimanapun, isu biasa timbul apabila menggunakan operator LIKE dengan pengekodan utf8_general_ci, yang membawa kepada gelagat carian sensitif huruf besar-besaran.
Untuk menangani perkara ini, terdapat beberapa penyelesaian yang boleh mengekalkan ketidakpekaan huruf besar-kecil:
1. Perbandingan Rentetan Perduaan:
SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';
Dengan menggunakan BINARI, perbandingan rentetan menjadi tidak sensitif huruf besar, kerana rentetan binari dianggap sebagai jujukan bait tanpa mengambil kira huruf besar.
2. Klausa COLLATE dengan utf8_bin:
SELECT .... FROM .... WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
Klausa COLLATE menentukan set aksara dan himpunan khusus untuk perbandingan. utf8_bin memastikan perbandingan tidak peka huruf besar-kecil untuk data utf8.
Pertimbangan Prestasi:
Perhatikan bahawa penggunaan BINARI atau COLLATE boleh memberi kesan kepada prestasi pertanyaan. Perbandingan BINARI boleh menjadi lebih cekap, manakala COLLATE boleh memperkenalkan overhed pemprosesan tambahan. Oleh itu, penyelesaian optimum mungkin bergantung pada senario penggunaan tertentu.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencapai carian tidak peka huruf besar-kecil dengan pengendali LIKE dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!