SQL: LIKE vs = Fehler? [Duplikat]

8

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?

    
dk766 25.02.2013, 16:18
quelle

2 Antworten

10

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%
    
Femaref 25.02.2013, 16:22
quelle
0

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.

Ссылка

    
LiamB 25.02.2013 16:22
quelle

Tags und Links