2012-03-30 25 views
6

perché select 'aaa' =0 ritorno 1 (VERO) se ho una tabella comemysql conversione stringa di ritorno 0

userid | pass 

user1 | pas1 

se interrogo:

select from table where userid = 0 and pass =0 

mi dà tutte le righe?

risposta

10

MySQL vede 'aaa' = 0 e pensa a se stesso: "Sono in grado di convertire sia AAA ad un numero intero, o 0 per una stringa"

Indovina qual è?

In sostanza quello che sta succedendo è che 'aaa' si sta convertendo in un intero, e come non è un intero valido, si getta a 0.

0 = 0 è certamente vero (o true == 1) .

Sospetto che lo stesso stia accadendo con la colonna userid, anche se senza conoscere i suoi valori/tipo di dati, è difficile dirlo.

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

+0

molto ben spiegato –

+0

mi ha battuto ad esso :) –

Problemi correlati