Maison > base de données > tutoriel mysql > le corps du texte

Comment effectuer une recherche insensible aux diacritiques dans MySQL pour les accents espagnols ?

DDD
Libérer: 2024-11-01 07:48:31
original
475 Les gens l'ont consulté

How to Perform Diacritic Insensitive Search in MySQL for Spanish Accents?

Recherche insensible aux diacritiques MySQL pour les accents espagnols

Lorsque vous traitez des données contenant des caractères accentués, il peut être difficile d'effectuer des recherches efficaces qui restent insensibles aux signes diacritiques. Ceci est particulièrement pertinent dans des langues comme l'espagnol, où les mots incluent généralement des accents (á, é, í, ó, ú).

Problème :

Une requête de base de données comme "SELECT * FROM table WHERE word LIKE '%word%'" peut ne pas renvoyer des résultats précis si le terme de recherche contient différentes variantes d'accents, telles que "lapiz" au lieu de "lápiz".

Solution : Jeu de caractères et classement

Pour activer la recherche insensible aux signes diacritiques, il est crucial de définir le jeu de caractères et le classement appropriés pour votre connexion à la base de données. Dans MySQL, cela peut être réalisé en utilisant les commandes suivantes :

SET NAMES latin1;
Copier après la connexion

ou

SET NAMES utf8;
Copier après la connexion

Le jeu de caractères "latin1" est couramment utilisé pour les langues comme l'espagnol, qui ont un nombre limité de caractères accentués. "utf8" est un jeu de caractères plus complet qui prend en charge une plus large gamme de caractères accentués.

Une fois le jeu de caractères défini, vous pouvez utiliser la syntaxe suivante pour effectuer des recherches insensibles aux signes diacritiques :

SELECT * FROM table WHERE word LIKE _utf8'search_term'
Copier après la connexion

Exemple :

mysql> SET NAMES latin1;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     0 | 
+-----------------------+
Copier après la connexion

Dans cet exemple, la recherche de "lapiz" ne renverra pas "lápiz" car le jeu de caractères "latin1" ne considère pas les signes diacritiques comme interchangeables.

mysql> SET NAMES utf8;
mysql> SELECT 'lápiz' LIKE 'lapiz';
+-----------------------+
| 'lápiz' LIKE 'lapiz' |
+-----------------------+
|                     1 | 
+-----------------------+
Copier après la connexion

Cependant, en utilisant le jeu de caractères "utf8", la recherche correspondra correctement à "lápiz" et "lapiz" en raison de sa prise en charge de l'insensibilité diacritique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!