Maison  >  Article  >  base de données  >  Comment effectuer des recherches insensibles aux diacritiques dans MySQL ?

Comment effectuer des recherches insensibles aux diacritiques dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 12:38:02812parcourir

How to Perform Diacritic Insensitive Searches in MySQL?

Recherche insensible aux diacritiques MySQL

Lorsque vous travaillez avec des mots espagnols contenant des accents, il peut être difficile d'effectuer des requêtes de recherche tout en tenant compte des signes diacritiques . Cet article fournit une solution pour exécuter des recherches insensibles aux signes diacritiques dans une base de données MySQL en utilisant une combinaison de jeux de caractères et de classements.

L'exemple fourni :

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

ne tient pas compte des différences diacritiques et peut exclure les résultats contenant des mots comme "lápiz" lors de la recherche de "lapiz".

Pour obtenir une insensibilité aux signes diacritiques, vous pouvez utiliser la commande MySQL SET NAMES pour spécifier un jeu de caractères et un classement spécifiques pour la connexion à la base de données. En définissant le jeu de caractères sur latin1 et le classement sur un caractère insensible aux accents, la requête peut faire correspondre les mots avec et sans accents.

Exemple :

SET NAMES latin1;
SELECT 'lápiz' LIKE 'lapiz';

Cette requête renverra 0, indiquant que "lápiz" et "lapiz" ne sont pas égaux.

En passant au jeu de caractères utf8 :

SET NAMES utf8;
SELECT 'lápiz' LIKE 'lapiz';

La requête renverra 1, démontrant que la recherche est désormais insensible aux signes diacritiques.

Pour spécifier explicitement que le modèle doit correspondre à une chaîne UTF-8, on peut utiliser le préfixe _utf8 :

SET NAMES latin1;
SELECT _utf8'lápiz' LIKE _utf8'lapiz';

Dans cet exemple, la requête renverra 1, confirmant l'insensibilité aux diacritiques même lors de l'utilisation explicite du jeu de caractères latin1.

Pour plus de compréhension, reportez-vous à la documentation MySQL sur la prise en charge des jeux de caractères.

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!

Déclaration:
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