Jeglicher String wird also von mysql als 0 interpretiert, korrekt?
Nein.
> select 1 = "1abc";
+------------+
| 1 = "1abc" |
+------------+
| 1 |
+------------+
1 row in set, 1 warning (0.00 sec)
> select 1 = "abc1";
+------------+
| 1 = "abc1" |
+------------+
| 0 |
+------------+
1 row in set, 1 warning (0.00 sec)
Jeglicher String, der sich nicht als Zahl interpretieren lässt (konkret mit der Darstellung einer solchen beginnt) wird beim Vergleich mit einer Zahl zu 0 konvertiert.