Nur Nicht-Null-Werte in MySQL auswählen
Dieser Tutorial-Artikel zeigt Ihnen, wie Sie eine Select-Anweisung in MySQL schreiben, die alle Nullwerte aus bestimmten Spalten entfernt.
Grundlegendes zu Nullwerten in MySQL
Die NULL
-Werte helfen uns zu wissen, welche Teile einer Tabelle leer sind, und ermöglichen es uns, angemessen damit umzugehen.
Gründe für das Entfernen von Nullzeilen oder -spalten aus einer Tabelle hängen weitgehend davon ab, wonach Sie suchen, aber ein gutes Beispiel ist, wenn Sie Daten aus einer bestimmten Spalte in einer Tabelle benötigen und eine Zeile als NULL
zurückgegeben wird, ist dies sinnlos Lesen dieser Informationen.
Beim Umgang mit großen Tabellen kann das Entfernen von Nullwerten Zeit sparen und den Rechenaufwand reduzieren.
Anstatt ein Skript zu schreiben, um eine Tabelle abzufragen, und dann ein weiteres zu schreiben, um die Daten zu durchlaufen und Nullwerte zu finden, können Sie den Prozess vereinfachen, indem Sie eine IS NOT NULL
-Bedingung in das anfängliche Skript einfügen.
SELECT * FROM 'table name'
WHERE 'column name' IS NOT NULL;
Das Ergebnis ist die vollständige Tabelle ohne Zeilen mit NULL
-Werten basierend auf der angegebenen Spalte.
Das folgende Beispiel enthält eine Liste von Postleitzahlen in Albany zusammen mit einer Kategorie true
oder false
auf jeder Seite, um zwischen korrekt eingegebenen Postleitzahlen und solchen mit Tippfehlern zu unterscheiden:
| code | cd_check |
| -------|----------|
| NULL | true |
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12359 | NULL |
| 12227 | true |
Um nur die Zeile mit einem NULL
-Wert in der Spalte cd_check
zu entfernen, wenden Sie den folgenden Code an:
CREATE TABLE albany (
code INTEGER,
cd_check TEXT
);
INSERT INTO albany VALUES (NULL,"true");
INSERT INTO albany VALUES (12649,"false");
INSERT INTO albany VALUES (12248,"true");
INSERT INTO albany VALUES (12239,"true");
INSERT INTO albany VALUES (12359,NULL);
INSERT INTO albany VALUES (12227,"true");
SELECT code, cd_check FROM albany
WHERE cd_check IS NOT NULL;
Ergebnis:
| code | cd_check |
| -------|----------|
| NULL | true |
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12227 | true |
Oben wurde die Tabelle ohne die Zeile zurückgegeben, die einen NULL
-Wert in der Spalte cd_check
enthält. Da aber nur eine Spalte angegeben wurde, bleibt die Zeile mit einem NULL
-Wert unter der Code-Spalte.
Sie können Zeilen aus mehreren Spalten entfernen, indem Sie die AND
-Anweisung hinzufügen. Die Anweisung überprüft beide Spalten und gibt Folgendes zurück:
| code | cd_check |
| -------|----------|
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12227 | true |
Beide Zeilen mit Nullwerten wurden aus der Tabelle entfernt.
Nur Nicht-Null-Werte mit WHERE NOT
und <=>
in MySQL auswählen
Anstatt IS NOT NULL
im Skript zu platzieren, können Sie die folgende Alternative verwenden:
Die Vergleichsoperatoren WHERE NOT
und <=>
ersetzen IS NOT
, wenn auf WHERE
NOT
folgt.
Beispiel:
SELECT code, cd_check FROM albany
WHERE NOT cd_check <=> NULL;
Dies wird zwar auch funktionieren, es ist jedoch besser, IS NOT NULL
zu verwenden, da dies eine bessere Vorgehensweise ist.