Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah MySQL mengendalikan diakritik dalam set aksara dan himpunan?

Bagaimanakah MySQL mengendalikan diakritik dalam set aksara dan himpunan?

DDD
DDDasal
2024-10-25 20:55:02899semak imbas

How does MySQL handle diacritics in character sets and collations?

Pemetaan Aksara Set Aksara MySQL

Dalam MySQL, gelagat lalai untuk banyak himpunan Unikod, termasuk utf8_general_ci dan utf8_unicode_ci, adalah untuk memetakan aksara dengan diakritik, seperti "åäö," kepada aksara asas mereka tanpa diakritik, seperti "aao." Ini bermakna pertanyaan yang menggunakan aksara diakritik mungkin tidak selalu menghasilkan hasil yang diharapkan.

Tingkah laku ini mempengaruhi pertanyaan dalam konteks terminal dan PHP. Ia timbul daripada peraturan pengekodan dan penyusunan aksara khusus yang digunakan oleh MySQL.

Sebab Pemetaan

Pemetaan aksara diakritik kepada aksara asasnya bertujuan untuk menyediakan pengalaman carian yang lebih umum dan konsisten. Dengan menganggap aksara dengan dan tanpa diakritik sebagai setara, pangkalan data boleh mengembalikan hasil yang memenuhi julat pertanyaan pengguna yang lebih luas.

Melumpuhkan Pemetaan

Jika anda ingin melumpuhkan pemetaan ini dan lakukan carian sensitif huruf besar dan kecil sambil mengekalkan aksara diakritik, anda boleh menggunakan kaedah berikut:

  • Gunakan Pengumpulan yang Memelihara Diakritik:
    Tukar kepada pengumpulan yang melayan watak dengan dan tanpa diakritik secara berbeza. Contohnya ialah utf8_bin, yang melakukan perbandingan binari rentetan.
  • Nyatakan Pengumpulan untuk Pertanyaan Khusus:
    Apabila melaksanakan pertanyaan, anda boleh menentukan pengumpulan secara eksplisit menggunakan kata kunci COLLATE . Sebagai contoh, anda boleh menggunakan pertanyaan berikut untuk mengekalkan diakritik:

    <code class="sql">select * from topics where name COLLATE utf8_bin = 'Harligt';</code>

Alternatif

Jika anda memerlukan carian tidak peka huruf besar-kecil tanpa penukaran umlaut, anda boleh mempertimbangkan untuk menggunakan indeks teks penuh dengan tokenizer ASCII_WS. Tokenizer ini mengabaikan tanda baca dan diakritik, membolehkan carian tidak peka huruf besar-kecil yang cekap.

Kesimpulan

Layanan MySQL terhadap aksara dengan diakritik boleh menjejaskan gelagat pertanyaan carian. Memahami peraturan pemetaan lalai dan memilih pilihan pengumpulan yang sesuai adalah penting untuk memastikan pertanyaan mencerminkan kriteria carian yang dimaksudkan dengan tepat.

Atas ialah kandungan terperinci Bagaimanakah MySQL mengendalikan diakritik dalam set aksara dan himpunan?. 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