Heim  >  Artikel  >  Datenbank  >  MySQL IN-Operator und Nullwerte: Warum werden Zeilen mit Nullfehlern ausgeschlossen?

MySQL IN-Operator und Nullwerte: Warum werden Zeilen mit Nullfehlern ausgeschlossen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-23 17:43:02733Durchsuche

MySQL IN Operator and Null Values: Why Are Rows with Null Errors Excluded?

MySQL IN-Operator und Nullwerte

In MySQL wird der IN-Operator verwendet, um zu überprüfen, ob ein bestimmter Wert mit einem beliebigen Wert innerhalb eines angegebenen Werts übereinstimmt Liste. Bei Verwendung des IN-Operators mit Nullwerten kann es jedoch zu unerwartetem Verhalten kommen.

Warum NULL-Werte ausgeschlossen werden

Der MySQL IN-Operator gibt ein boolesches Ergebnis zurück (TRUE oder FALSCH). Beim Vergleich eines Nicht-Null-Werts mit Null ist das Ergebnis immer FALSE. Wenn Sie IN verwenden, um zu prüfen, ob ein Wert keinem Wert in einer Liste entspricht, der Null enthält, werden daher alle Zeilen mit Nullwerten vom Ergebnis ausgeschlossen.

Behebung des Problems

Um Nullwerte in das Ergebnis einzuschließen, können die folgenden Optionen verwendet werden:

  1. COALESCE-Funktion: Die COALESCE-Funktion kann Nullwerte durch einen angegebenen Standardwert ersetzen . Mit dieser Funktion kann die Abfrage wie folgt geändert werden:
Error = COALESCE(Error, '') NOT IN ('Timeout','Connection Error');
  1. ODER-Operator: Der ODER-Operator kann verwendet werden, um sowohl das Vorhandensein eines bestimmten zu prüfen Fehlercode und das Fehlen eines Nullfehlerwerts. Daher kann die Abfrage wie folgt umgeschrieben werden:
Error IS NULL OR Error NOT IN ('Timeout','Connection Error');
  1. CASE-Anweisung: Die CASE-Anweisung kann verwendet werden, um mehrere Bedingungen auszuwerten und basierend darauf einen bestimmten Wert zurückzugeben das Ergebnis. In diesem Fall kann damit ein boolescher Ausdruck erstellt werden, der TRUE für Zeilen mit Fehlern ungleich Null zurückgibt. Die Abfrage kann wie folgt geändert werden:
CASE WHEN Error IS NULL THEN 1
ELSE Error NOT IN ('Timeout','Connection Error') THEN 1
END = 1
  1. JOIN-Unterabfrage: Eine JOIN-Unterabfrage kann verwendet werden, um Daten aus mehreren Tabellen abzurufen und die Ergebnisse basierend auf a zu kombinieren häufiger Zustand. Mit dieser Methode kann sichergestellt werden, dass Zeilen mit Nullfehlern nicht ausgeschlossen werden:
SELECT t1.*
FROM Table1 t1
LEFT JOIN (
    SELECT Error
    FROM ErrorTable
    WHERE Error IN ('Timeout')
) t2 ON t1.Error = t2.Error;

Fazit

Bei der Verwendung des IN-Operators mit Nullwerten ist dies wichtig um zu verstehen, dass der Operator null als Sonderwert behandelt. Um Nullwerte in das Ergebnis einzubeziehen, müssen zusätzliche Bedingungen oder Techniken, wie die oben genannten, eingesetzt werden.

Das obige ist der detaillierte Inhalt vonMySQL IN-Operator und Nullwerte: Warum werden Zeilen mit Nullfehlern ausgeschlossen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn