Wie man Daten mit NULL in einer SQL-IN-Klausel korrekt verarbeitet

In diesem Artikel wird erklärt, wie man Daten, die NULL-Werte enthalten, bei der Verwendung der IN-Klausel in SQL-Abfragen richtig verarbeitet. NULL steht für einen „unbekannten Wert“ und kann nicht mit herkömmlichen Vergleichsoperatoren behandelt werden, daher sind spezielle Maßnahmen erforderlich. In diesem Artikel werden Methoden erläutert, um Daten, die NULL enthalten, korrekt zu verarbeiten.

Inhaltsverzeichnis

Grundlegendes Verständnis von NULL-Werten

NULL repräsentiert in Datenbanken einen „unbekannten Wert“. Dies bedeutet, dass der Wert nicht vorhanden, nicht anwendbar oder unbekannt ist. In SQL wird NULL besonders behandelt, und es ist Vorsicht geboten, wenn es mit anderen Werten verglichen wird.

Eigenschaften von NULL

Da NULL anzeigt, dass kein Wert vorhanden ist, kann es nicht mit anderen Werten verglichen werden. Zum Beispiel wird NULL = NULL nicht als wahr, sondern als NULL bewertet, da NULL einen unbekannten Wert darstellt.

Umgang mit NULL

In SQL gibt es spezielle Funktionen und Bedingungen, um mit NULL-Werten umzugehen. Zu den bekanntesten gehören IS NULL und IS NOT NULL. Mit diesen können NULL-Werte überprüft und verarbeitet werden.

Grundlegende Verwendung der IN-Klausel

Die IN-Klausel wird in SQL verwendet, um Bedingungen für eine Liste bestimmter Werte festzulegen. Dadurch kann effizient für mehrere Werte gefiltert werden.

Grundlegende Syntax der IN-Klausel

Die grundlegende Syntax der IN-Klausel lautet wie folgt:

SELECT * FROM テーブル名 WHERE カラム名 IN (値1, 値2, 値3);

Diese Abfrage gibt die Zeilen zurück, bei denen die angegebene Spalte mit Wert1, Wert2 oder Wert3 übereinstimmt.

Vorteile der IN-Klausel

Mit der IN-Klausel kann man mehrere OR-Bedingungen einfach schreiben. Zum Beispiel die folgende Abfrage:

SELECT * FROM テーブル名 WHERE カラム名 = 値1 OR カラム名 = 値2 OR カラム名 = 値3;

Dies kann mit der IN-Klausel einfach wie folgt geschrieben werden:

SELECT * FROM テーブル名 WHERE カラム名 IN (値1, 値2, 値3);

Dadurch wird die Abfrage lesbarer und einfacher zu verwalten.

Probleme mit Daten, die NULL enthalten

Beim Verwenden der IN-Klausel muss besondere Vorsicht beim Umgang mit Daten, die NULL enthalten, walten lassen. NULL bedeutet „unbekannter Wert“ und kann in herkömmlichen Vergleichen zu unerwarteten Ergebnissen führen.

Probleme mit NULL und der IN-Klausel

Wenn eine Liste, die NULL enthält, in der IN-Klausel angegeben wird, hat NULL selbst keine Übereinstimmung mit einem Wert und beeinflusst das Abfrageergebnis nicht. Zum Beispiel ignoriert die folgende Abfrage NULL:

SELECT * FROM テーブル名 WHERE カラム名 IN (値1, 値2, NULL);

Diese Abfrage gibt nur die Zeilen zurück, bei denen die Spalte mit Wert1 oder Wert2 übereinstimmt, und ignoriert Zeilen, die NULL enthalten.

Probleme durch Eigenschaften von NULL-Werten

In SQL wird jeder Vergleich mit NULL immer als FALSE oder UNKNOWN bewertet. Daher kann es bei der Verwendung der IN-Klausel auf eine Spalte, die NULL enthält, zu unerwarteten Ergebnissen kommen. Zum Beispiel wird NULL in der folgenden Abfrage ignoriert:

SELECT * FROM テーブル名 WHERE カラム名 IN (値1, 値2) OR カラム名 IS NULL;

In diesem Fall ist eine zusätzliche Bedingung erforderlich, um Zeilen mit NULL-Werten explizit zu behandeln.

Verarbeitungsmethode mit IS NULL

Um Daten, die NULL enthalten, korrekt mit der IN-Klausel zu verarbeiten, ist die Kombination der IS NULL-Bedingung eine effektive Methode. Dies ermöglicht es, NULL-Werte explizit zu behandeln.

Kombination von IN-Klausel und IS NULL

Durch die Kombination von IN-Klausel und IS NULL können auch Daten gefiltert werden, die NULL enthalten. Im folgenden Beispiel wird gezeigt, wie man Zeilen mit NULL-Werten erhält:

SELECT * FROM テーブル名 WHERE カラム名 IN (値1, 値2) OR カラム名 IS NULL;

Diese Abfrage gibt alle Zeilen zurück, bei denen die Spalte mit Wert1 oder Wert2 übereinstimmt, sowie Zeilen mit NULL-Werten.

Konkrete Anwendungsbeispiele

Zum Beispiel, wenn Sie in einer Kundendatenbank Kunden mit einem bestimmten Status (‚Active‘, ‚Pending‘) oder mit NULL im Statusfeld abrufen möchten, wird dies wie folgt beschrieben:

SELECT * FROM 顧客 WHERE ステータス IN ('Active', 'Pending') OR ステータス IS NULL;

Dies gibt alle Kunden zurück, deren Status ‚Active‘, ‚Pending‘ oder NULL ist.

Lösungsmethode mit UNION

Eine weitere Methode zur korrekten Verarbeitung von Daten, die NULL enthalten, ist die Verwendung von UNION. Durch die Verwendung von UNION können Zeilen, die NULL-Werte enthalten, und Zeilen mit anderen bestimmten Werten separat abgerufen und zusammengeführt werden.

Grundlegende Syntax von UNION

UNION wird verwendet, um die Ergebnisse von zwei oder mehr SELECT-Abfragen zu kombinieren. Jede SELECT-Abfrage wird unabhängig ausgeführt, und die Ergebnisse werden als eine Menge zurückgegeben.

SELECT * FROM テーブル名 WHERE カラム名 IN (値1, 値2)
UNION
SELECT * FROM テーブル名 WHERE カラム名 IS NULL;

Konkrete Anwendungsbeispiele

Wenn Sie zum Beispiel Produkte mit bestimmten Produkt-IDs (1, 2) und Produkte mit NULL in der Produkt-ID abrufen möchten, schreiben Sie dies wie folgt:

SELECT * FROM 製品 WHERE 製品ID IN (1, 2)
UNION
SELECT * FROM 製品 WHERE 製品ID IS NULL;

Diese Abfrage gibt alle Produkte mit den Produkt-IDs 1 oder 2 und Produkte mit NULL in der Produkt-ID zurück.

Unterschied zwischen UNION und UNION ALL

UNION entfernt doppelte Zeilen, während UNION ALL alle Zeilen zurückgibt. Wenn Sie Duplikate eliminieren möchten, verwenden Sie UNION; wenn Sie alle Zeilen abrufen möchten, verwenden Sie UNION ALL.

Codebeispiele und Praxis

Hier werden konkrete Codebeispiele vorgestellt, wie man Daten, die NULL enthalten, in der IN-Klausel korrekt verarbeitet. Diese Beispiele zeigen, wie man Abfragen tatsächlich formuliert.

Beispiel mit IS NULL

Erstens, ein Beispiel, das die Kombination von IN-Klausel und IS NULL zeigt. Es ruft Kunden aus einer Kundendatenbank ab, deren Status entweder ‚Active‘, ‚Pending‘ oder NULL ist:

SELECT * FROM 顧客 WHERE ステータス IN ('Active', 'Pending') OR ステータス IS NULL;

Diese Abfrage gibt alle Kunden zurück, deren Status ‚Active‘, ‚Pending‘ oder NULL ist.

Beispiel mit UNION

Als nächstes ein Beispiel, das die Verwendung von UNION zeigt. Es ruft Produkte aus einer Produktdatenbank ab, die bestimmte Produkt-IDs (1, 2) haben, und Produkte, bei denen die Produkt-ID NULL ist:

SELECT * FROM 製品 WHERE 製品ID IN (1, 2)
UNION
SELECT * FROM 製品 WHERE 製品ID IS NULL;

Diese Abfrage gibt alle Produkte zurück, deren Produkt-ID 1 oder 2 ist und Produkte, bei denen die Produkt-ID NULL ist.

Praktische Anwendungsbeispiele

Im tatsächlichen Betrieb, wenn Sie zum Beispiel Bestellungen aus einer Bestelldatenbank abrufen möchten, deren Bestellstatus entweder ‚Completed‘, ‚Pending‘ oder NULL ist, schreiben Sie dies wie folgt:

SELECT * FROM 注文 WHERE ステータス IN ('Completed', 'Pending')
UNION
SELECT * FROM 注文 WHERE ステータス IS NULL;

Dies gibt alle Bestellungen zurück, deren Status ‚Completed‘, ‚Pending‘ oder NULL ist.

Zusammenfassung

Wir haben erläutert, wie man Daten mit NULL in einer SQL-IN-Klausel korrekt verarbeitet. NULL steht für einen „unbekannten Wert“ und ist in herkömmlichen Vergleichen schwer zu handhaben, daher sind spezielle Maßnahmen erforderlich. Wir haben gelernt, wie man die Kombination von IN-Klausel und IS NULL verwendet, sowie die Verwendung von UNION, um Daten mit NULL zu verarbeiten. Durch die richtige Anwendung dieser Methoden ist es möglich, auch Daten mit NULL vollständig zu erfassen.

Um SQL-Abfragen korrekt zu schreiben, ist es wichtig, die Eigenschaften von NULL zu verstehen und die geeigneten Verarbeitungsmethoden auszuwählen. Verwenden Sie die in diesem Artikel vorgestellten Methoden, um Daten mit NULL effektiv zu behandeln.

Inhaltsverzeichnis