2017-06-10 6 views
1

Ich Ausführung einer MySQL-Abfrage: -Einfache MySQL-Abfrage: - Was ist daran falsch?

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id!='1' 

Es gibt 1 Ergebnis: -

name : Deepak 
id: 2 
username: NULL 

Es funktioniert gut.

Problem ist hier ..: -

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id!='1' 
    AND username!='d' 

Es gibt 0 Ergebnis, obwohl Benutzername in Mytable null ist, aber es immer noch nicht die Reihe des "Deepak" zurückzukehren, wie es in früheren Abfrage zurück .

Bitte könnten Sie erklären, warum passiert es?

+2

Da NULL seine eigene Sache. Es ist weder gleich noch ungleich anderen Dingen - nicht einmal NULL! – Strawberry

+0

Ok, vielen Dank .. – bhpcv

+1

@MichaelO. Nee. Obwohl du mit <=> davonkommen konntest – Strawberry

Antwort

1

Wie in this post gezeigt, müssen Sie überprüfen, ob der Benutzername "is null" oder "<> 'd'".

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id != '1' 
    AND (username IS NULL OR username != 'd') 
0

Sie können keine NULL abfragen, da sie keinen Wert darstellt. Sie sollten Ihre Abfrage verwenden IS NULL wie folgt aktualisiert:

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id != 1 
    AND (username IS NULL OR username != 'd') 
0

null kein Wert ist, es ist das Fehlen derselben. Betrachten Sie es als einen "unbekannten" Wert. Wann immer Sie es in einem Operator verwenden, der einen Wert erwartet (z. B. =), wäre das Ergebnis null (unbekannt). Z.B. "Wie lautet der Name des Benutzers? Ich weiß es nicht. Nun, ist es anders als 'd'? Ich weiß es immer noch nicht." Wenn Sie null s behandeln möchten, würden Sie so explizit mit dem is Betreiber zu tun haben:

SELECT * 
    FROM mytable 
WHERE name LIKE '%D%' 
    AND id!='1' 
    AND (username IS NULL OR username!='d') 
Verwandte Themen