Rumah  >  Artikel  >  pangkalan data  >  Mengapakah \"Harligt\" dan \"Härligt\" Mengembalikan Keputusan yang Sama dalam MySQL? Pandangan pada Pengumpulan dan Normalisasi Karakter.

Mengapakah \"Harligt\" dan \"Härligt\" Mengembalikan Keputusan yang Sama dalam MySQL? Pandangan pada Pengumpulan dan Normalisasi Karakter.

DDD
DDDasal
2024-10-26 22:48:30425semak imbas

Why Does

Layanan MySQL terhadap Watak Istimewa: Dijelaskan Paradoks

Dalam MySQL, melaksanakan pertanyaan yang melibatkan aksara khas seperti 'Å', 'Ä', dan 'Ö' sering menimbulkan persoalan mengenai ketekalan keputusan. Sebagai contoh, pertanyaan dengan 'Harligt' dan 'Härligt' menghasilkan hasil yang sama, membuatkan pengguna bingung.

Fenomena ini dikaitkan dengan tetapan penyusunan lalai MySQL, khususnya "utf8_general_ci" dan "utf8_unicode_ci." Pengumpulan ini menormalkan aksara unikod tertentu, termasuk huruf Scandinavia, dengan menyamakannya dengan persamaan bahasa Inggerisnya (cth., "Ä = A"). Normalisasi ini memudahkan operasi perbandingan dan carian tetapi boleh menyusahkan dalam senario tertentu.

Untuk menyelesaikan isu ini, pertimbangkan pilihan berikut:

  • Gunakan Pengumpulan Berbeza: Pengumpulan seperti "utf8_bin" mengekalkan nilai aksara, termasuk aksara khas, tetapi mungkin mempunyai implikasi untuk operasi lain.
  • Tentukan Pengumpulan dalam Pertanyaan: Untuk pertanyaan khusus yang anda mahu mengatasi penyusunan lalai , tambahkan "COLLATE utf8_bin" pada pertanyaan. Contoh:
select * from topics where name='Harligt' COLLATE utf8_bin;
  • Buat Pengumpulan Tersuai: Jika kedua-dua penyelesaian di atas tidak memenuhi keperluan anda, anda boleh membuat pengumpulan tersuai yang sesuai dengan keperluan khusus anda.

Perlu diperhatikan bahawa operasi LIKE yang tidak peka huruf besar-besaran dalam MySQL tidak boleh dilakukan tanpa menormalkan aksara khas. Walau bagaimanapun, perbincangan berkaitan boleh didapati di sini:

  • [Mencari pengumpulan MySQL yang tidak peka huruf besar-kecil di mana “a” != “ä”](https://dba.stackexchange.com/questions/231116/ mencari-kes-tidak-sensitif-mysql-collation-where-a-a)
  • [carian sensitif kes MYSQL untuk medan utf8_bin](https://stackoverflow.com/questions/9704962/mysql-case-sensitive- search-for-utf8-bin-field)

Atas ialah kandungan terperinci Mengapakah \"Harligt\" dan \"Härligt\" Mengembalikan Keputusan yang Sama dalam MySQL? Pandangan pada Pengumpulan dan Normalisasi Karakter.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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