Maison > base de données > tutoriel mysql > Comment puis-je effectuer des recherches insensibles aux diacritiques pour les accents espagnols dans MySQL ?

Comment puis-je effectuer des recherches insensibles aux diacritiques pour les accents espagnols dans MySQL ?

Patricia Arquette
Libérer: 2024-11-02 02:28:30
original
446 Les gens l'ont consulté

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

MySQL : recherche insensible aux diacritiques pour les accents espagnols

Dans les bases de données MySQL, la gestion des mots avec des accents espagnols peut être difficile lors de l'exécution de recherches. Cet article fournit une solution pour réaliser des recherches insensibles aux signes diacritiques, vous permettant de récupérer des mots avec ou sans accents comme vous le souhaitez.

Requête avec des accents

À titre d'exemple, considérons le requête ci-dessous :

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

Cette requête vérifie à la fois les champs name et productCode pour le terme de recherche $q. Cependant, il ne renverra que les correspondances exactes, à l'exclusion des mots avec des accents.

Recherche insensible aux diacritiques

Pour réaliser une recherche insensible aux diacritiques, nous pouvons exploiter les jeux de caractères et les classements. Les classements définissent la façon dont les caractères sont comparés, et certains classements sont insensibles aux signes diacritiques.

Modification du jeu de caractères

En modifiant le jeu de caractères, nous pouvons modifier le classement et activer les signes diacritiques. recherche insensible. Par exemple :

SET NAMES latin1;
Copier après la connexion

Test de la requête

Après avoir modifié le jeu de caractères, nous pouvons réexécuter la requête pour tester les résultats :

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

Comme vous pouvez le voir, la requête renvoie 0 même si le mot "'lápiz'" contient des accents. En effet, le jeu de caractères est défini sur latin1, qui est sensible à la casse et aux signes diacritiques.

Utilisation du classement UTF-8

Pour activer la recherche insensible aux signes diacritiques, nous pouvons utiliser le classement UTF-8. Les formats de transformation Unicode (UTF) sont des schémas de codage de caractères qui gèrent les caractères multi-octets et les signes diacritiques.

SET NAMES utf8;
Copier après la connexion

Réexécution de la requête avec le jeu de caractères UTF-8 :

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

Désormais, la requête renvoie 1, indiquant que la recherche est insensible aux signes diacritiques.

Considérations supplémentaires

Pour garantir une recherche insensible aux signes diacritiques pour tout jeu de caractères, vous pouvez spécifier l'UTF -8 collationnement explicitement :

SELECT 'lápiz' LIKE _utf8'lapiz';
Copier après la connexion

Cela garantit que le classement UTF-8 est utilisé pour la comparaison, quel que soit le jeu de caractères actuel.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal