Heim >Datenbank >MySQL-Tutorial >Warum gibt MySQL TRUE zurück, wenn ein String mit 0 verglichen wird?
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:
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:
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!