Sensitiviti Kes dengan LIKE dalam MySQL
Semasa melakukan carian LIKE dalam MySQL menggunakan pertanyaan "SELECT concat_ws(title,description) as concatenated SETELAH digabungkan SEPERTI '%SearchTerm%';", mungkin diperhatikan bahawa carian adalah sensitif huruf besar-besaran, walaupun jadual dikodkan menggunakan pengumpulan utf8_general_ci dan enjin storan MyISAM.
Sebab bagi tingkah laku ini ialah kerana operator LIKE melakukan perbandingan sensitif huruf besar-besaran apabila salah satu operan ialah rentetan binari. Dalam kes ini, medan "bercantum" ialah rentetan perduaan, menyebabkan carian menjadi sensitif huruf besar dan kecil.
Untuk menyelesaikan isu ini dan menjadikan carian tidak sensitif huruf besar-kecil, disyorkan untuk menggunakan kata kunci BINARI dengan LIKE operator:
SELECT .... FROM .... WHERE `concatenated` LIKE BINARY '%SearchTerm%';
Ini memastikan bahawa perbandingan rentetan dilakukan secara binari, mengabaikan sebarang perbezaan kes.
Sebagai alternatif, kata kunci COLLATE boleh digunakan bersama-sama dengan pengumpulan utf8_bin untuk membuat carian tidak sensitif huruf besar/kecil:
SELECT .... FROM .... WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
Kedua-dua kaedah ini mengubah suai gelagat carian dengan berkesan, menjadikannya tidak sensitif huruf besar dan kecil sambil mengekalkan manfaat prestasi himpunan utf8_general_ci.
Atas ialah kandungan terperinci Mengapa MySQL LIKE Operator Case Sensitif Apabila Menggunakan Rentetan Binari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!