Maison >base de données >tutoriel mysql >Pourquoi « Harligt » et « Härligt » renvoient-ils les mêmes résultats dans MySQL ?

Pourquoi « Harligt » et « Härligt » renvoient-ils les mêmes résultats dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 08:50:02661parcourir

Why Do `Harligt` and `Härligt` Return the Same Results in MySQL?

Traitement par MySQL des caractères Unicode : Ä, Ö et Ü

Il est déroutant de rencontrer des résultats de requête identiques lors de la recherche à la fois de "Harligt " et " Härligt " dans MySQL. Ce comportement provient des paramètres de classement par défaut de MySQL qui correspondent à certains caractères Unicode.

Les classements Unicode non spécifiques à la langue de MySQL, tels que utf8_general_ci et utf8_unicode_ci, traitent certains caractères comme équivalents, à savoir :

  • Ä = A
  • Ö = O
  • Ü = U

En conséquence, les deux requêtes perçoivent les trois caractères comme identiques, donnant ainsi des résultats correspondants .

Pour résoudre ce problème, il existe deux options :

  1. Modifier le classement : Basculer vers un classement qui n'effectue pas la mise en équivalence de ce caractère, tel que utf8_bin . Cependant, cette décision peut avoir des implications plus larges sur le traitement des données.
  2. Remplacer le classement pour des requêtes spécifiques : Pour les requêtes individuelles, il est possible de remplacer le classement par défaut en spécifiant explicitement celui souhaité. Par exemple :
<code class="sql">select * from topics where name='Harligt' COLLATE utf8_bin;</code>

Cette approche permet d'effectuer des recherches sensibles à la casse sans conversion automatique des caractères.

Si une recherche non sensible à la casse est souhaitée mais sans conversion de caractères, MySQL ne fournit pas actuellement de classement approprié. Cependant, des discussions sont en cours et des solutions potentielles au sein de la communauté.

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