2016-08-01 9 views
0

Ich habe eine Tabelle mit einigen E-Mail-Adressen. Die Adresse ist natürlich eine Zeichenkette, die ich bei der Tabellenerstellung als VARCHAR (100) DEFAULT NULL eingerichtet habe.MySQL WHERE-Klausel arbeitet nicht mit Strings

Nun, wenn ich benutze:

SELECT * FROM emails; 

Es funktioniert gut, wenn ich wählen Sie auch IDs verwenden, ist es fein

SELECT * FROM emails WHERE id = 1; 

funktioniert aber wenn ich versuche, eine bestimmte E-Mail

zu finden
SELECT * FROM emails WHERE address = '[email protected]' 

Es funktioniert einfach nicht. Es gibt keine passenden Zeilen zurück, aber ist ein Zeilenabgleich, weil es auf der SELECT * FROM emails Abfrage erscheint.

Was kann hier passieren? Warum funktioniert die WHERE-Klausel nicht?

EDIT: Die Daten aus der folgenden Import kam

LOAD DATA LOCAL INFILE 'c:/users/user/dev/mysql/emails.txt' 
INTO TABLE emails 
FIELDS terminated by ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(address) 
+0

Sind Sie sicher, dass die Zeile mit dieser E-Mail-Adresse nichts anderes in dieser Spalte hat? Leerzeichen, ungerade Zeichencodes usw. – RiggsFolly

+0

Anscheinend nicht. Ich habe auf die weißen Felder gedacht, deshalb habe ich 'UPDATE E-Mails SET-Adresse = TRIM (Adresse)' benutzt, aber alles ist gleich geblieben. – user1620696

+0

Dann versuchen Sie ein LIKE, um zu sehen, ob dort etwas nicht einsehbar ist – RiggsFolly

Antwort

2

Es führende oder nachgestellte Zeichen im Feld können. Versuchen Sie dies:

SELECT * FROM emails WHERE address LIKE '%[email protected]%'