Mengapa MySQL LIKE Operator Case Sensitif Apabila Menggunakan Rentetan Binari?

Barbara Streisand
Lepaskan: 2024-11-07 19:00:03
asal
478 orang telah melayarinya

Why is MySQL's LIKE Operator Case Sensitive When Using a Binary String?

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

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan