2012-03-30 18 views
6

私はMySQLの文字列変換リターン0

userid | pass 

user1 | pas1 

のようなテーブルを持っている場合、私は照会する場合select 'aaa' =0リターン1(TRUE) はなぜ:

select from table where userid = 0 and pass =0 

それは私にすべての行を与えますか?

答えて

10

MySQLは= 0 'AAA' を見て、自分自身に考えて: "私は文字列に整数にAAAを変換、または0どちらか"

これはどちらかと推測されますか?

基本的に何が起こっては、「AAA」は整数に変換されていることであり、それは有効な整数ではないとして、それは0

0 = 0にキャストもちろん​​真(または真の== 1)であります。

値/データ型を知らなくても、あなたのuseridカラムで同じことが起こっていると思われます。それは言うまでもありません。

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

+0

は非常にうまく –

+0

がそれに私を打つ説明:) –