Heim > Datenbank > MySQL-Tutorial > Warum gibt der String-Vergleich von MySQL mit 0 manchmal TRUE zurück?

Warum gibt der String-Vergleich von MySQL mit 0 manchmal TRUE zurück?

Patricia Arquette
Freigeben: 2024-11-26 04:24:14
Original
874 Leute haben es durchsucht

Why Does MySQL's String Comparison with 0 Sometimes Return TRUE?

MySQLs rätselhafter String-zu-0-Vergleich: entmystifiziert

Beim Durchführen von MySQL-Abfragen kann es zu einem unerwarteten Ergebnis kommen: dem Vergleich einer String-Spalte mit 0 (als Zahl) gibt unerwartet TRUE zurück. Dieses Verhalten kann kontraintuitiv erscheinen, insbesondere wenn andere numerische Vergleiche die erwarteten Ergebnisse liefern.

Wenn man sich mit den zugrunde liegenden Mechanismen von MySQL befasst, liegt die Antwort in der automatischen Konvertierungsfunktion. MySQL verfügt über die Fähigkeit, eine Zeichenfolge basierend auf bestimmten Bedingungen nahtlos in eine Zahl umzuwandeln:

  • Strings, die mit numerischen Zeichen beginnen, werden als Zahlen interpretiert.
  • Strings, denen führende numerische Zeichen fehlen, sind es ausgewertet als 0.

Mit dieser Logik können wir das Geheimnis der Rückkehr von „string“ = 0 lüften WAHR. Da „string“ nicht mit einer Zahl beginnt, interpretiert MySQL sie als 0, was zum Vergleich SELECT 0 = 0 führt, der natürlich als TRUE ausgewertet wird.

Es ist jedoch wichtig zu beachten, dass diese Konvertierungen dies tun tritt beim direkten Vergleich von Zeichenfolgen nicht auf. Beispielsweise würde „0string“ = „string“ wie beabsichtigt FALSE ergeben.

Alternativ zwingt eine explizite Konvertierung mit einem Operator (z. B. ) MySQL dazu, die Zeichenfolge als Zahl zu behandeln. Bei Verwendung eines „ “-Operators summiert MySQL „0string“ und 0 und wandelt beide Werte in Zahlen (0 0) um, was zum erwarteten TRUE-Wert führt.

Darüber hinaus erlaubt MySQL auch das Summieren von Strings, die numerische Zeichen enthalten. Beispielsweise wird „1abc“ „2ef“ effektiv in 1 2 übersetzt und ergibt das erwartete Ergebnis von 3.

Das Verständnis dieser Mechanismen hinter den Kulissen löst das Rätsel der String-zu-0-Vergleiche von MySQL und berücksichtigt genaue Dateninterpretation und präzise Abfragekonstruktion.

Das obige ist der detaillierte Inhalt vonWarum gibt der String-Vergleich von MySQL mit 0 manchmal TRUE zurück?. 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