Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum liefern „Harligt' und „Härligt' in MySQL die gleichen Ergebnisse? Ein Blick auf Sortierung und Zeichennormalisierung.

DDD
Freigeben: 2024-10-26 22:48:30
Original
422 Leute haben es durchsucht

Why Does

MySQLs Umgang mit Sonderzeichen: Ein erklärtes Paradoxon

In MySQL wird das Ausführen von Abfragen mit Sonderzeichen wie „Å“, „Ä“, und „Ö“ wirft häufig Fragen zur Ergebniskonsistenz auf. Beispielsweise liefern Abfragen mit „Harligt“ und „Härligt“ identische Ergebnisse, was die Benutzer verwirrt.

Dieses Phänomen wird auf die Standard-Sortierungseinstellungen von MySQL zurückgeführt, insbesondere „utf8_general_ci“ und „utf8_unicode_ci“. Diese Sortierungen normalisieren bestimmte Unicode-Zeichen, einschließlich skandinavischer Buchstaben, indem sie sie ihren englischen Entsprechungen gleichsetzen (z. B. „Ä = A“). Diese Normalisierung vereinfacht Vergleichsvorgänge und Suchvorgänge, kann jedoch in bestimmten Szenarien unpraktisch sein.

Um dieses Problem zu beheben, ziehen Sie die folgenden Optionen in Betracht:

  • Verwenden Sie eine andere Sortierung: Sortierungen wie „utf8_bin“ bewahren Zeichenwerte, einschließlich Sonderzeichen, können aber Auswirkungen auf andere Vorgänge haben.
  • Sortierung in Abfragen angeben: Für bestimmte Abfragen, bei denen Sie die Standardsortierung überschreiben möchten , hängen Sie „COLLATE utf8_bin“ an die Abfrage an. Beispiel:
select * from topics where name='Harligt' COLLATE utf8_bin;
Nach dem Login kopieren
  • Erstellen Sie eine benutzerdefinierte Sortierung: Wenn keine der oben genannten Lösungen Ihren Anforderungen entspricht, können Sie eine benutzerdefinierte Sortierung erstellen, die Ihren spezifischen Anforderungen entspricht.

Es ist erwähnenswert, dass LIKE-Operationen ohne Berücksichtigung der Groß-/Kleinschreibung in MySQL nicht ohne die Normalisierung von Sonderzeichen ausgeführt werden können. Verwandte Diskussionen finden Sie jedoch hier:

  • [Auf der Suche nach einer MySQL-Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung, wobei „a“ != „ä“ ist](https://dba.stackexchange.com/questions/231116/ looking-for-case-insensitive-mysql-collation-where-a-a)
  • [MYSQL-Suche mit Berücksichtigung der Groß-/Kleinschreibung für das Feld utf8_bin](https://stackoverflow.com/questions/9704962/mysql-case-sensitive- search-for-utf8-bin-field)

Das obige ist der detaillierte Inhalt vonWarum liefern „Harligt' und „Härligt' in MySQL die gleichen Ergebnisse? Ein Blick auf Sortierung und Zeichennormalisierung.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!