MySQL: Auswählen von Zeilen, in denen eine Spalte null ist
Ich habe da ein problem, wo, wenn ich versuche die Zeilen ausgewählt, die eine NULL für eine bestimmte Spalte, es gibt eine leere Menge. Allerdings, wenn ich mir die Tabelle in phpMyAdmin, es sagt null für die meisten der Zeilen.
Meine Abfrage sieht wie folgt aus:
SELECT pid FROM planets WHERE userid = NULL
Leere Menge zu jeder Zeit.
Viele Orte, die sagte, um sicherzustellen, dass diese nicht gespeichert werden, wie "NULL" oder "null" anstelle eines tatsächlichen Werts, und einer sagte zu versuchen, nur ein Raum (userid = ' '
) aber keiner von Ihnen gearbeitet haben. Es war ein Vorschlag, nicht zu verwenden, InnoDB und innoDB verwenden, weil InnoDB hat null Probleme beim speichern. Ich wechselte den Tisch, um innoDB-aber jetzt fühle ich mich wie das problem kann sein, dass es noch nicht wirklich null, weil der Art, es könnte konvertieren. Ich möchte dies tun, ohne neu zu erstellen die Tabelle als innoDB oder sonst etwas, aber wenn ich muss, kann ich sicher mal ausprobieren.
InformationsquelleAutor der Frage The.Anti.9 | 2010-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQL NULL ist etwas besonderes, und Sie haben zu tun
WHERE field IS NULL
, da NULL nicht gleich alles,einschließlich sich selbst (sprich: NULL = NULL ist immer falsch).Sehen
Rule 3
https://en.wikipedia.org/wiki/Codd%27s_12_rulesInformationsquelleAutor der Antwort Marc B
InformationsquelleAutor der Antwort Michael Pakhantsov
Als alle gegebenen Antworten möchte ich hinzufügen, dass wenig mehr. Ich hatte auch vor dem gleichen Problem.
Warum deine Abfrage nicht? Sie haben,
Diese wird nicht bringen Sie das erwartete Ergebnis, weil aus mysql-doc
Hervorhebung von mir.
Lösung
Testen für
NULL
verwenden Sie dieIS NULL
undIS NOT NULL
Betreiber.NULL
.NULL
.InformationsquelleAutor der Antwort Aniket Kulkarni
Es gibt auch eine
<=>
Betreiber:Funktionieren würde. Das schöne ist, dass
<=>
können auch verwendet werden, mit nicht-NULL-Werte:SELECT NULL <=> NULL
Erträge1
.SELECT 42 <=> 42
Erträge1
als gut.Siehe hier: https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_equal-to
InformationsquelleAutor der Antwort obe
Info aus http://w3schools.com/sql/sql_null_values.asp:
Also im Falle Ihrer problem:
InformationsquelleAutor der Antwort minhas23
Hatte das gleiche Problem, wo-Abfrage:
wieder keine Werte.
Scheint ein Problem mit InnoDB und derselben Abfrage auf die Daten in InnoDB erwarteten Ergebnisse zurückgegeben.
Ging mit:
Zurückgegeben, alle erwarteten Ergebnisse.
InformationsquelleAutor der Antwort RichKenny
Ich hatte das gleiche Problem beim konvertieren von Datenbanken aus Access nach MySQL (mit vb.net zur Kommunikation mit der Datenbank).
Ich brauchte, um zu beurteilen, ob ein Feld (Feld vom Typ varchar(1)) war null.
Dieser Anweisung gearbeitet für mein Szenario:
InformationsquelleAutor der Antwort user2406670
InformationsquelleAutor der Antwort user