MySQL SELECT nur ungültige Werte
Ist es möglich, eine Select-Anweisung, die nur NOT NULL-Werte nimmt zu tun?
Im Moment verwende ich dies:
SELECT * FROM table
Und dann muss ich die Nullwerte mit einer php-Schleife herausfiltern.
Gibt es eine Möglichkeit zu tun:
SELECT * (that are NOT NULL) FROM table
?
Wenn ich jetzt * auswähle, erhalte ich val1,val2,val3,null,val4,val5,null,null etc...., aber ich möchte nur die Werte erhalten, die nicht null in meinem Ergebnis sind. Ist dies ohne Filterung mit einer Schleife möglich?
248
3
Sie sollten
IS NOT NULL
verwenden. (Die Vergleichsoperatoren=
und `ergeben beide
UNKNOWNmit
NULL` auf beiden Seiten des Ausdrucks.)Nur der Vollständigkeit halber möchte ich erwähnen, dass man in MySQL auch den nullsicheren Gleichheitsoperator negieren kann, aber das ist kein Standard-SQL.
Bearbeitet, um Kommentare zu berücksichtigen. Es hört sich so an, als ob Ihre Tabelle nicht in der ersten Normalform ist. In diesem Fall könnte eine Änderung der Struktur Ihre Aufgabe erleichtern. Es gibt aber auch ein paar andere Möglichkeiten...
Der Nachteil der obigen Methode ist, dass die Tabelle mehrfach gescannt wird, einmal für jede Spalte. Das kann möglicherweise durch die folgende Methode vermieden werden, aber ich habe sie nicht in MySQL getestet.
Sie können Zeilen herausfiltern, die einen NULL-Wert in einer bestimmten Spalte enthalten:
Wenn Sie Zeilen herausfiltern wollen, die in einer beliebigen Spalte einen Nullwert enthalten, versuchen Sie dies:
Update: Nach Ihren Kommentaren zu urteilen, wollen Sie das vielleicht?
Und ich stimme mit Martin überein, dass Sie, wenn Sie dies tun müssen, wahrscheinlich Ihr Datenbankdesign ändern sollten.
Der einzige Nachteil dieses Ansatzes ist, dass man nur 5 Spalten vergleichen kann, danach wird das Ergebnis immer falsch sein, also vergleiche ich nur die Felder, die
NULL
sein können.