Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah saya boleh melakukan carian tidak sensitif diakritik untuk aksen Sepanyol dalam MySQL?

Bagaimanakah saya boleh melakukan carian tidak sensitif diakritik untuk aksen Sepanyol dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 02:28:30376semak imbas

How can I perform diacritic insensitive searches for Spanish accents in MySQL?

MySQL: Diacritic Insensitive Search for Spanish Accents

Dalam pangkalan data MySQL, mengurus perkataan dengan loghat Sepanyol boleh mencabar apabila melakukan carian. Artikel ini menyediakan penyelesaian untuk mencapai carian tidak sensitif diakritik, membolehkan anda mendapatkan semula perkataan dengan atau tanpa aksen seperti yang dikehendaki.

Menyoal dengan Aksen

Sebagai contoh, pertimbangkan pertanyaan di bawah:

$result = mysql_query("SELECT * FROM $lookuptable WHERE disabled = '0' AND name LIKE '%$q%' OR productCode LIKE '%$q%' LIMIT $sugglimit");

Pertanyaan ini menyemak kedua-dua medan nama dan kod produk untuk istilah carian $q. Walau bagaimanapun, ia hanya akan mengembalikan padanan tepat, tidak termasuk perkataan dengan aksen.

Carian Tidak Peka Diakritik

Untuk mencapai carian tidak sensitif diakritik, kami boleh memanfaatkan set aksara dan himpunan. Pengumpulan mentakrifkan cara aksara dibandingkan dan sesetengah himpunan tidak sensitif diakritik.

Menukar Set Aksara

Dengan mengubah suai set aksara, kita boleh mengubah himpunan dan mendayakan diakritik carian tidak sensitif. Contohnya:

SET NAMES latin1;

Menguji Pertanyaan

Selepas menukar set aksara, kami boleh melaksanakan semula pertanyaan untuk menguji keputusan:

mysql> SET NAMES latin1;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     0 | 
+-----------------------+

Seperti yang anda lihat, pertanyaan mengembalikan 0 walaupun perkataan "'lápiz'" mengandungi aksen. Ini kerana set aksara ditetapkan kepada latin1, iaitu sensitif huruf besar dan sensitif diakritik.

Menggunakan Pengumpulan UTF-8

Untuk mendayakan carian tidak sensitif diakritik, kita boleh menggunakan pengumpulan UTF-8. Format Transformasi Unikod (UTF) ialah skema pengekodan aksara yang mengendalikan aksara dan diakritik berbilang bait.

SET NAMES utf8;

Menjalankan semula pertanyaan dengan set aksara UTF-8:

mysql> SET NAMES utf8;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     1 | 
+-----------------------+

Sekarang, pertanyaan mengembalikan 1, menunjukkan bahawa carian tidak sensitif diakritik.

Pertimbangan Tambahan

Untuk memastikan carian tidak sensitif diakritik untuk mana-mana set aksara, anda boleh menentukan UTF -8 pengumpulan secara eksplisit:

SELECT 'lápiz' LIKE _utf8'lapiz';

Ini menjamin bahawa pengumpulan UTF-8 digunakan untuk perbandingan, tanpa mengira set aksara semasa.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melakukan carian tidak sensitif diakritik untuk aksen Sepanyol dalam MySQL?. 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