Heim > Datenbank > MySQL-Tutorial > Warum behandelt MySQL String-Vergleiche mit Null als wahr?

Warum behandelt MySQL String-Vergleiche mit Null als wahr?

Linda Hamilton
Freigeben: 2024-11-26 07:57:09
Original
743 Leute haben es durchsucht

Why Does MySQL Treat String Comparisons to Zero as True?

String-zu-Null-Vergleich in MySQL: Die Wahrheit ans Licht

Beim Vergleich von String-Spalten mit Null in MySQL zeigt sich ein überraschendes Verhalten: die Das Ergebnis wird als wahr ausgewertet. Dies tritt in folgenden Szenarien auf:

select 'string' = 0 as res; -- res = 1 (true)
Nach dem Login kopieren

Der Vergleich derselben Zeichenfolge mit anderen Zahlen, sowohl positiven als auch negativen, führt jedoch zum erwarteten falschen Ergebnis. Diese Inkonsistenz wirft die Frage auf: Warum tritt diese Anomalie auf?

Hinter der String-Magie

MySQL wandelt Strings bei Vergleichen stillschweigend in Zahlen um. Bei Zeichenfolgen, die nicht mit einer Zahl beginnen, ergibt die Konvertierung Null. Dies erklärt, warum:

select 'string' = 0 as res;  -- res = 1 (true)
Nach dem Login kopieren

Konvertierung steuern

Während MySQL Konvertierungen häufig automatisch durchführt, kann es nützlich sein, sie mithilfe von Operatoren wie „“ zu erzwingen. Bedenken Sie Folgendes:

select '0string' + 0 = 'string' AS res; -- res = 1 (true)
Nach dem Login kopieren

In dieser Abfrage wird die Zeichenfolge „0string“ zu Null addiert, was zu ihrer Konvertierung in eine Zahl führt. Anschließend wird die konvertierte Zeichenfolge „string“ mit Null verglichen, was erneut eine Konvertierung auslöst. Der resultierende Vergleich erfolgt zwischen numerischen Werten und ergibt „true“.

Die automatischen Zeichenfolgenkonvertierungen von MySQL gehen über Vergleiche hinaus. Zum Beispiel:

select '1abc' + '2ef' AS total; -- total = 1+2 = 3
Nach dem Login kopieren

Strings werden vor der Addition in Zahlen umgewandelt, was zu korrekten numerischen Operationen führt.

Das Verständnis dieses String-Konvertierungsmechanismus hilft, das scheinbar paradoxe Verhalten bei MySQL-String-Vergleichen zu entmystifizieren. Es ermöglicht Entwicklern, diese Funktion beim Schreiben von Abfragen und bei der Datenbearbeitung effektiv zu nutzen.

Das obige ist der detaillierte Inhalt vonWarum behandelt MySQL String-Vergleiche mit Null als wahr?. 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