Maison > base de données > tutoriel mysql > Comment puis-je effectuer des recherches de texte intégral sensibles aux accents dans MySQL ?

Comment puis-je effectuer des recherches de texte intégral sensibles aux accents dans MySQL ?

DDD
Libérer: 2024-12-17 02:22:24
original
790 Les gens l'ont consulté

How Can I Perform Accent-Sensitive Full-Text Searches in MySQL?

Utilisation du classement pour les recherches sensibles aux accents dans MySQL

Lorsque vous effectuez des recherches en texte intégral dans MySQL, il peut être nécessaire de prendre en compte l'accent des caractères sensibilité. Dans cette situation, vous pourriez rencontrer un défi lorsque vous tenterez de faire la différence entre des mots accentués et non accentués, comme le montre l'exemple fourni dans la question.

Pour résoudre ce problème et garantir que les recherches sont sensibles à l'accent, vous avez deux options :

  1. Déclarer le classement sensible aux accents :

    Modifier le classement du champ en question pour utiliser un classement binaire, tel que utf8_bin. Cela comparera les octets codés en UTF-8 en tant que données brutes, ce qui entraînera une sensibilité aux accents.

    ALTER TABLE words
    ALTER COLUMN word VARCHAR(10) COLLATE utf8_bin;
    Copier après la connexion
  2. Utiliser la clause Collate dans la requête :

    Si vos recherches sont généralement insensibles aux accents mais que vous avez besoin d'une exception pour une requête spécifique, vous pouvez ajouter la clause COLLATE au champ problématique dans votre requête :

    SELECT *  FROM `words`
    WHERE `word` = 'abád' COLLATE utf8_bin;
    Copier après la connexion

Considérations supplémentaires pour MySQL 8.0 et les versions futures :

  • Faites toujours correspondre le jeu de caractères avec le début de le nom du classement.
  • Les classements se terminant par _bin (par exemple, utf8mb4_bin) ignorent à la fois la casse et les accents.
  • Les classements contenant _as_ (par exemple, utf8mb4_as_ci) ignorent les accents mais conservent le respect de la casse.
  • Envisagez d'utiliser utf8mb4 comme jeu de caractères par défaut, car il offre une meilleure prise en charge d'Unicode.
  • Évitez de vous fier à des routines de conversion telles que CONVERT() en spécifiant le classement approprié lors de la création de la colonne ou définition du tableau.

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