2016-09-26 6 views
1

int型フィールドの文字で検索したとき、int型フィールドの値が0である結果が返されます。int型フィールドで文字型を検索するmysqlが間違った結果を返す

select * from table where b = "test" 

カラムbはint型です。得られた結果は、bが値0を有する行である。 どうすればこの問題を回避できますか?

+1

どうすればこの問題を回避できますか?それをしないでください。 – Drew

+0

なぜこれをやりたいのですか?mysqlは最初にintフィールドにテキストを挿入させません。 –

+0

これは、ユーザーが文字列値の整数フィールドを検索しようとしているためです。 – Thejas

答えて

1

MySQLには、CAST('some text' AS INT)が0になるというこの小さな違いがあります。また、CAST('123some text' AS INT)123であることが起こります。

WHERE integer_valued_column = 'text'を実行すると、'text'が暗黙的に整数値にキャストされます。それが、あなたが観察した奇妙な行動を引き起こす原因です。

どうやって避けますか? @Drewは正しいです。それをしないでください。

+0

"select * from table where b =" test "とb!= 0"のようにクエリを変更しても問題ありませんか? – Thejas

+0

あなたは何でもできます。しかし、整数とテキストを混在させることは、一般に良いIT実践とは見なされません。 –

関連する問題