MySQL-Datenbank ignoriert nachgestellte Leerzeichen in eindeutigen Feldern
Beim Erstellen einer Datenbank mit einem eindeutigen Feld in MySQL wird erwartet, dass Werte führende oder nachgestellte Felder enthalten Leerzeichen sollten als getrennt behandelt werden. Es wurde jedoch beobachtet, dass nachgestellte Leerzeichen beim Einfügen abgeschnitten werden, was zu Fehlern aufgrund doppelter Werte führt, wenn versucht wird, Wörter mit unterschiedlichen nachgestellten Leerzeichen einzufügen.
Das zugrunde liegende Problem liegt im Standardverhalten von MySQL beim String-Vergleich, das nachgestellte Leerzeichen ignoriert. Folglich verwendet der UNIQUE-Index den Standard-String-Vergleich, was dazu führt, dass nachfolgende Leerzeichen ignoriert werden und Einfügungen aufgrund der Zeichengleichheit abgelehnt werden.
Um dieses Problem zu lösen, besteht ein Ansatz darin, Werte als VARBINARY zu speichern, was Leerzeichen beibehält und ermöglicht die Erstellung eindeutiger Indizes, die nachfolgende Leerzeichen berücksichtigen. Obwohl es das Speichern von Werten mit unterschiedlichen Leerzeichen ermöglicht, ist es wichtig zu beachten, dass das Sortieren nach diesen Werten möglicherweise nicht die erwarteten Ergebnisse liefert.
Eine alternative Lösung besteht darin, die NO PAD-Sortierungen von MySQL zu verwenden, die in MySQL 8.0 eingeführt wurden . Diese Sortierungen wie utf8mb4_0900_ai_ci verarbeiten Zeichenfolgenvergleiche, ohne nachgestellte Leerzeichen zu ignorieren. Indem Sie das eindeutige Feld mit einer NO PAD-Sortierung erstellen, können Sie sicherstellen, dass Werte mit unterschiedlichen nachgestellten Leerzeichen als eindeutig behandelt werden.
Das obige ist der detaillierte Inhalt vonWarum ignoriert MySQL nachgestellte Leerzeichen in eindeutigen Feldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!