Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL TRUE zurück, wenn ein String mit 0 verglichen wird?

Warum gibt MySQL TRUE zurück, wenn ein String mit 0 verglichen wird?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 12:12:12966Durchsuche

Why Does MySQL Return TRUE When Comparing a String to 0?

Anomalie beim MySQL-String-Vergleich: Das Rätsel wird gelüftet

Beim Vergleich einer MySQL-String-Spalte mit dem Wert 0 tritt ein unerwartetes Ergebnis auf: Es wird zurückgegeben WAHR! Dieses rätselhafte Verhalten kann auf die automatische Umwandlung von Zeichenfolgen in Zahlen in MySQL zurückgeführt werden.

Standardmäßig versucht MySQL, Zeichenfolgen in Zahlen umzuwandeln, wenn numerische Vergleiche durchgeführt werden. Wenn eine Zeichenfolge nicht mit einem numerischen Zeichen beginnt, wird davon ausgegangen, dass sie einen Wert von 0 hat. In unserem Fall wird „Zeichenfolge“ in 0 umgewandelt, was zum Vergleich „Zeichenfolge“ = 0 führt.

Allerdings , dieses Gießverhalten gilt nur für numerische Vergleiche. Beim Vergleich von Strings mit anderen Strings erfolgt keine automatische Konvertierung. Daher führt der Vergleich von „string“ mit „0“ als String korrekt zu FALSE.

Um dieses Verhalten weiter zu veranschaulichen, betrachten Sie die folgenden Beispiele:

  • '1string' = 0: FALSCH
  • '1string' = 1: WAHR
  • '0string' = 0: TRUE
  • 'string' = 0: TRUE

Um diese Anomalie zu vermeiden und ein konsistentes Verhalten sicherzustellen, wird empfohlen, Zeichenfolgen explizit in den gewünschten Datentyp umzuwandeln, bevor numerische Vergleiche durchgeführt werden. Die folgende Abfrage erzwingt beispielsweise, dass „0string“ als Zahl behandelt wird:

  • '0string' 0 = 'string': TRUE

Diese Abfrage gibt TRUE zurück weil „0string“ in die Zahl 0 umgewandelt wird, wenn es zur Zahl 0 addiert wird. In ähnlicher Weise gibt „1abc“ „2ef“ die Summe der in Zahlen umgewandelten Zeichenfolgen zurück (hier 3). Fall).

Durch das Verständnis des automatischen Umwandlungsmechanismus in MySQL können Entwickler unerwartete Ergebnisse vermeiden und genaue Zeichenfolgenvergleiche sicherstellen.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL TRUE zurück, wenn ein String mit 0 verglichen wird?. 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