2013-05-01 33 views
64

ben tester dize username olmadığı bu tüm sonuçları döndürmek için bekliyor Fakat bu çalışma değilimSQL: dize nasıl gerçekleştirilir eşit değildir

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

aşağıdaki sorgu var. Ben Like operatörünün tersini arıyorum düşünüyorum ama emin değilim? Aramalarımda sayılarla ilgili çözümler buldum (<> nereden aldım), ancak bu dizelerle çalışmıyor gibi görünüyor.

+4

Eğer 'NULL' ile ilgili sorunlar yaşıyorsanız değerler var değerler? ('NULL <> 'username'' =>' NULL' => false]? – Wrikken

cevap

102

Sizin where fıkra tester boş olmadığı durumlarda testerusername maç VE gelmez tüm satırları döndürür. Eğer boş değerlere eklemek istiyorsanız

, deneyin:

where tester <> 'username' or tester is null 

bir alt dize olarak kelime "kullanıcı adı" içermeyen dizeleri arıyorsanız, o zaman like kullanılabilir:

where tester not like '%username%' 
+0

bu sorunla ilgili öneride bulunabilir misiniz? Https://stackoverflow.com/questions/47549379/how-to-compare-varchar-fields-in-mysql – davidb

+0

WORKS. işe yarıyor! – YumYumYum

25

aşağıdaki sorgu deneyin

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

strcomp buradaki görevi uygun olabilir (döner 0 dizeleri aynı olduğunda):

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

BOŞ güvenli durum gibi görünüyor olacaktır:

select * from table 
where NOT (tester <=> 'username') 
İlgili konular