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

Patricia Arquette
Lepaskan: 2024-11-02 02:28:30
asal
375 orang telah melayarinya

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

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

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

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

Menjalankan semula pertanyaan dengan set aksara UTF-8:

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!