2013-05-01 10 views
64

Ich habe die Abfrage folgendeSQL: Wie Zeichenfolge ausführen nicht gleich

SELECT * FROM table 
WHERE tester <> 'username'; 

Ich erwarte dies alle Ergebnisse zurück, wo Tester nicht die Zeichenfolge username ist, aber das funktioniert nicht. Ich denke, ich suche nach der Umkehrung der Like-Operator, aber ich bin mir nicht sicher? In meinen Suchen habe ich Lösungen für Zahlen gefunden (das ist, wo ich <> von bekommen habe), aber das scheint nicht mit Strings zu arbeiten.

+4

die Werte Sind Sie Probleme mit 'NULL' haben Werte? ('NULL <> 'Benutzername'' =>' NULL' => falsch)? – Wrikken

Antwort

102

Ihre where Klausel werden alle Zeilen zurück, wo tester nicht username passt und wo tester nicht null ist.

Wenn Sie einschließen NULLs wollen, versuchen Sie:

where tester <> 'username' or tester is null 

Wenn Sie Strings suchen, der nicht das Wort „username“ als Teil enthalten, dann kann like verwendet werden:

where tester not like '%username%' 
+0

könnten Sie bitte Beratung für dieses Problem https://stackoverflow.com/questions/47549379/how-to-compare-varchar-fields-in-mysql – davidb

+0

WORKS. Es klappt! – YumYumYum

25

Versuchen Sie, die folgende Abfrage

select * from table 
where NOT (tester = 'username') 
5
select * from table 
where tester NOT LIKE '%username%'; 
5

Die strcomp Funktion hier geeignet sein kann (0 zurück, wenn Strings sind identisch):

SELECT * from table WHERE Strcmp(user, testername) <> 0; 
9

NULL-sichere Zustand würde aussehen wie:

select * from table 
where NOT (tester <=> 'username') 
Verwandte Themen