2012-03-30 12 views
6

warum select 'aaa' =0 return 1 (TRUE) wenn ich eine Tabelle haben wiemysql String-Konvertierung return 0

userid | pass 

user1 | pas1 

wenn ich fragen:

select from table where userid = 0 and pass =0 

es gibt mir alle Zeilen?

Antwort

10

MySQL ‚aaa‘ = 0 und denkt an sich selbst sieht. „Ich kann entweder konvertieren aaa auf eine ganze Zahl oder 0 in eine Zeichenfolge“

Erraten Sie, mit wem es geht?

Im Allgemeinen, was geschieht, ist, daß ‚aaa‘ in eine Ganzzahl umzuwandeln wird, und da es keine gültige ganze Zahl ist, wirft es auf 0

0 = 0 ist natürlich wahr (oder wahr == 1) .

Ich vermute, das gleiche passiert mit Ihrer Benutzer-ID-Spalte, obwohl ohne seine Werte/Datentyp wissen, ist es schwer zu sagen.

http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

+0

sehr schön erklärt –

+0

mich, um es zu schlagen :) –