Ich habe ein sehr seltsames Verhalten, das ich in meiner SQL-Datenbank nicht verstehe (ich verwende MySQL 5.5.8):
Ich habe in einer Tabelle ein varchar (10) einen Namen: joe.
Wenn ein SQL wie folgt ausgeführt wird:
%Vor%Ich bekomme ein Ergebnis: Joe, aber das ist falsch, da ich in der Tabelle keinen 'Joe' (mit einem Leerzeichen am Ende) habe. Ich habe nur 'Joe' (kein Leerzeichen)
Wenn ich jedoch folgendes ausführe:
%Vor%Ich bekomme, wie ich es erwarte: nichts. So weit ich weiß = sollte "genau" sein, während Gleiches lockerer ist, um es mit Sub-Strings und% verwenden zu können.
Was vermisse ich?
Nachgestellte Leerzeichen sind nicht wichtig für CHAR
oder VARCHAR
Vergleich mit =
. Siehe Zeichenfolgenvergleichsfunktionen :
Insbesondere nachgestellte Leerzeichen sind signifikant, was nicht für CHAR- oder VARCHAR-Vergleiche gilt, die mit dem Operator = durchgeführt werden:
%Vor%
Ich glaube, das liegt an dem Datentyp, den Sie verwenden.
Die CHAR- und VARCHAR-Typen sind ähnlich, unterscheiden sich jedoch in ihrer Art gespeichert und abgerufen. Ab MySQL 5.0.3 unterscheiden sie sich auch im Maximum Länge und in, ob nachfolgende Leerzeichen beibehalten werden.