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

Comment effectuer des recherches insensibles aux diacritiques dans MySQL ?

Susan Sarandon
Libérer: 2024-11-01 12:38:02
original
811 Les gens l'ont consulté

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");
Copier après la connexion

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';
Copier après la connexion

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';
Copier après la connexion

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';
Copier après la connexion

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!

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
À 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!