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
Freigeben: 2025-01-05 10:35:40
Original
675 Leute haben es durchsucht

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 <=> ? ...
Nach dem Login kopieren

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
Nach dem Login kopieren

Universeller Support

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

IS [NOT] DISTINCT FROM 
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage