2017-08-21 11 views
0

Wenn ich die folgende Abfrage ausführen, bekomme ich 12 Zeilen, wenn ich 6 (die, die nicht Null in 'ersten' sind) haben sollte, warum alle IAM alle 12? Weil sie zukünftige Daten sind, sind sie leer, aber ich wollte, dass die Tabelle die Daten für das ganze Jahr auf dem Tisch anzeigt. Ich habe varchar und nicht int für die ersten verwendet, was nicht gut ist, weiß ich.NOT NULL NULL-Werte zurückgeben

SELECT * 
FROM office_figures 2016 
WHERE date_figures=2017 AND firsts IS NOT NULL 

mysql table

+0

'firsts' leer sind und nicht' NULL', müssen Sie sie mit 'NULL' ist oder Standard setzen zu' NULL' bevölkern. –

+0

Wenn Sie sagen, mit Null auffüllen .. meinen Sie tatsächlich setzen 'Null' in den Zellen? – Glen

Antwort

1

Wahrscheinlich sind die ersten, die Sie nicht dort sein wollen, nicht Null, sie könnten nur leere Zeichenfolgen sein. Versuchen Sie folgendes:

SELECT * 
FROM office_figures 2016 
WHERE date_figures=2017 AND firsts IS NOT NULL AND firsts != '' 
+0

vielen Dank, es hat funktioniert. Ich muss das jetzt wirklich wissen, ohne zu fragen, kannst du mich auf ein Nachschlagewerk verweisen, das dich gelehrt hat? – Glen

1
SELECT * 
FROM office_figures 2016 
WHERE date_figures=2017 AND firsts IS NOT NULL AND firsts !=""; 

Sie müssen ebenso wie ""! = NULL für einen leeren Wert in der Spalte überprüfen.

  • Null ist ein Fehlen eines Wertes. Eine leere Zeichenfolge ist ein Wert, aber ist einfach leer. Null ist speziell für eine Datenbank.

  • Null hat keine Grenzen, es kann für String, Integer, Datum usw. Felder in einer Datenbank verwendet werden.

  • NULL ist kein Speicher zugeordnet, die Zeichenfolge mit NUll Wert ist nur ein Zeiger, der auf nirgendwo im Speicher zeigt. Empty IS ist jedoch einem Speicherplatz zugeordnet, obwohl der im Speicher gespeicherte Wert "" ist.

Difference between NULL and Blank Value in Mysql
Überprüfen Sie den obigen Link um mehr zu wissen.