Nur Nicht-Null-Werte in MySQL auswählen

Raymond Peter 30 Januar 2023
  1. Grundlegendes zu Nullwerten in MySQL
  2. Nur Nicht-Null-Werte mit WHERE NOT und <=> in MySQL auswählen
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.