Heim >Datenbank >MySQL-Tutorial >Wie geht der MySQL-Operator „' mit NULL-Werten in Vergleichen um?

Wie geht der MySQL-Operator „' mit NULL-Werten in Vergleichen um?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 10:35:40709Durchsuche

How Does MySQL's `` Operator Handle NULL Values in Comparisons?

The Elusive <=> Operator in MySQL

MySQL bietet einen einzigartigen Operator, <=>, der Entwickler verwirren kann, die mit seinem rätselhaften Zweck nicht vertraut sind. Während es Ähnlichkeit mit dem herkömmlichen Gleichheitszeichen (=) hat, ist es von besonderer Bedeutung für den Umgang mit NULL-Werten.

Null-sichere Vergleiche

Im Gegensatz zu seinem Gegenstück < => stellt ein konsistentes Vergleichsergebnis sicher, unabhängig vom Vorhandensein von NULL-Werten. Anstatt NULL zu liefern, interpretiert es NULL als einen bestimmten Wert und ermöglicht so zuverlässige Vergleiche zwischen Spalten, die möglicherweise NULL-Werte enthalten.

Codeoptimierung und vorbereitete Anweisungen

<=> erweist sich insbesondere bei der Codeoptimierung als nützlich. Nehmen Sie zum Beispiel die folgende vorbereitete Anweisung:

... WHERE col_a <=> ? ...

Diese Anweisung behandelt Platzhalter entweder als Skalarwerte oder als NULL, ohne dass Abfrageänderungen erforderlich sind.

Alternative Operatoren

MySQL bietet zusätzliche Operatoren, die auf NULL zugeschnitten sind Vergleiche:

  • IS NULL: Bestimmt, ob ein Wert explizit NULL ist.
  • IS NOT NULL: Überprüft, ob ein Wert nicht NULL ist NULL.

Diese Operatoren fungieren als spezielle Versionen von <=> und drücken Ihre aus Absichten klarer.

Abfragetransformation für Portabilität

Um die Portabilität über Plattformen hinweg zu verbessern, kann Ihre Abfrage wie folgt umgewandelt werden:

WHERE p.name IS NULL

Universeller Support

Während MySQLs <=> bleibt plattformspezifisch, der SQL:2003-Standard hat ein ähnliches Prädikat eingeführt:

IS [NOT] DISTINCT FROM 

Dieses Prädikat funktioniert genauso wie <=>, allerdings mit breiterer Unterstützung. Für eine universelle Kompatibilität kann auch der folgende komplexe Ausdruck verwendet werden:

CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
     THEN 1
     ELSE 0
END = 1

Das obige ist der detaillierte Inhalt vonWie geht der MySQL-Operator „' mit NULL-Werten in Vergleichen um?. 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