Ist es möglich, eine select-Anweisung auszuführen, die nur NOT NULL-Werte akzeptiert?
Im Moment benutze ich Folgendes:
SELECT * FROM table
Und dann muss ich die Nullwerte mit einer PHP-Schleife herausfiltern.
Gibt es eine Möglichkeit:
SELECT * (that are NOT NULL) FROM table
?
Wenn ich jetzt * auswähle, erhalte ich val1, val2, val3, null, val4, val5, null, null usw., aber ich möchte nur die Werte erhalten, die in meinem Ergebnis nicht null sind. Ist dies ohne Filterung mit einer Schleife möglich?
Antworten:
Sie sollten verwenden
IS NOT NULL
. (Die Vergleichsoperatoren=
und<>
beide gebenUNKNOWN
mitNULL
auf beiden Seiten des Ausdrucks an.)Der Vollständigkeit halber möchte ich erwähnen, dass Sie in MySQL auch den Null-Safe-Equality-Operator negieren können , dies ist jedoch kein Standard-SQL.
Bearbeitet, um Kommentare wiederzugeben. Es hört sich so an, als ob Ihre Tabelle möglicherweise nicht in der ersten normalen Form vorliegt. In diesem Fall kann das Ändern der Struktur Ihre Aufgabe erleichtern. Ein paar andere Möglichkeiten, es zu tun ...
Der Nachteil des oben genannten ist, dass die Tabelle für jede Spalte mehrmals gescannt wird. Dies kann möglicherweise durch das Folgende vermieden werden, aber ich habe dies nicht in MySQL getestet.
quelle
CASE
Anweisung verwendet, keineCASE
Funktion. Also sollte es nichtEND CASE
stattEND
in demSELECT CASE ...
Teil sein?idx
Rom die ersteSELECT
von deridx
in der zweitenSELECT
? Was versucht dieCASE
Aussage zu erreichen? Was macht der zweiteSELECT
eigentlich? Und du machst einen inneren Join, keinen Cross-Join, oder?SELECT * FROM table WHERE * IS NOT NULL AND primary_key="somevalue"
)Sie können Zeilen herausfiltern, die einen NULL-Wert in einer bestimmten Spalte enthalten:
Wenn Sie Zeilen herausfiltern möchten, die in einer Spalte eine Null enthalten, versuchen Sie Folgendes:
Update: Basierend auf Ihren Kommentaren möchten Sie dies vielleicht?
Und ich stimme Martin zu, dass Sie, wenn Sie dies tun müssen, wahrscheinlich Ihr Datenbankdesign ändern sollten.
quelle
*
zurückgegeben werden? Geben Sie möglicherweise einige Beispieldaten in Ihrer Frage an, da aus Ihrem obigen Kommentar nicht hervorgeht, ob dies alles eine Spalte ist.Der einzige Nachteil dieses Ansatzes ist, dass Sie nur 5 Spalten vergleichen können. Danach ist das Ergebnis immer falsch. Ich vergleiche also nur die Felder, die sein können
NULL
.quelle
Ich habe diese Lösung gefunden:
Diese Abfrage wählt den letzten nicht null Wert für jede Spalte aus.
Beispiel
Wenn Sie einen Tisch haben:
du erhältst:
Abfrage
Ich hoffe dir zu helfen.
quelle
Ich benutze den
\!
Befehl in MySQL, um NULL-Werte aus der Shell herauszuholen:Es funktioniert am besten mit einem richtigen,
.my.cnf
wo Ihre Datenbank / Benutzername / Passwort angegeben sind. Auf diese Weise müssen Sie nur Ihreselect
mit\! mysql e
und umgeben| grep -v NULL
.quelle
Folgende Abfrage arbeitet für mich
wenn ich dann den Standardwert der Spalte 'NULL' gesetzt habe
und wenn ich den Standardwert dann nichts gesetzt habe
quelle
Ja, verwenden Sie
NOT NULL
in Ihrer Anfrage wie folgt.quelle
MYSQL IST NICHT NULL MIT JOINS UND SELECT, INSERT INTO, DELETE & LOGICAL OPERATOR LIKE OR, NOT
quelle
quelle