Rumah > pangkalan data > tutorial mysql > Mengapa MySQL LIKE Queries Case-Sensitive dengan Pengekodan utf8_general_ci?

Mengapa MySQL LIKE Queries Case-Sensitive dengan Pengekodan utf8_general_ci?

Susan Sarandon
Lepaskan: 2024-11-09 18:05:02
asal
459 orang telah melayarinya

Why are MySQL LIKE Queries Case-Sensitive with utf8_general_ci Encoding?

Sensitiviti Kes dalam MySQL LIKE Query

Masalah:

Pertimbangkan pertanyaan MySQL berikut:

SELECT concat_ws(title, description) as concatenated
HAVING concatenated LIKE '%SearchTerm%';
Salin selepas log masuk

Walaupun menggunakan operator LIKE, carian kelihatan seperti kes sensitif apabila pengekodan jadual adalah utf8_general_ci dengan enjin storan MyISAM.

Penjelasan:

Enjin storan MyISAM menggunakan perbandingan tidak sensitif huruf besar-besaran untuk rentetan yang disimpan dalam pengekodan utf8_general_ci. Walau bagaimanapun, pengendali LIKE melakukan perbandingan sensitif huruf besar-besaran secara lalai.

Penyelesaian Optimum:

Untuk melakukan perbandingan tidak sensitif huruf besar-besaran, gunakan kata kunci BINARI seperti berikut:

SELECT ....
FROM ....
WHERE `concatenated` LIKE BINARY '%SearchTerm%';
Salin selepas log masuk

Perbandingan rentetan menjadi sensitif huruf besar apabila salah satu operan ialah binari rentetan.

Penyelesaian Alternatif:

Sebagai alternatif, gunakan pernyataan COLLATE untuk menentukan himpunan khusus setempat:

SELECT ....
FROM ....
WHERE `concatenated` like '%SearchTerm%' COLLATE utf8_bin;
Salin selepas log masuk

Pendekatan ini membolehkan perbandingan tidak sensitif huruf kecil sambil mengekalkan pengekodan aksara asal.

Atas ialah kandungan terperinci Mengapa MySQL LIKE Queries Case-Sensitive dengan Pengekodan utf8_general_ci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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