int型フィールドの文字で検索したとき、int型フィールドの値が0である結果が返されます。int型フィールドで文字型を検索するmysqlが間違った結果を返す
select * from table where b = "test"
カラムbはint型です。得られた結果は、bが値0を有する行である。 どうすればこの問題を回避できますか?
int型フィールドの文字で検索したとき、int型フィールドの値が0である結果が返されます。int型フィールドで文字型を検索するmysqlが間違った結果を返す
select * from table where b = "test"
カラムbはint型です。得られた結果は、bが値0を有する行である。 どうすればこの問題を回避できますか?
MySQLには、CAST('some text' AS INT)
が0になるというこの小さな違いがあります。また、CAST('123some text' AS INT)
が123
であることが起こります。
WHERE integer_valued_column = 'text'
を実行すると、'text'
が暗黙的に整数値にキャストされます。それが、あなたが観察した奇妙な行動を引き起こす原因です。
どうやって避けますか? @Drewは正しいです。それをしないでください。
"select * from table where b =" test "とb!= 0"のようにクエリを変更しても問題ありませんか? – Thejas
あなたは何でもできます。しかし、整数とテキストを混在させることは、一般に良いIT実践とは見なされません。 –
どうすればこの問題を回避できますか?それをしないでください。 – Drew
なぜこれをやりたいのですか?mysqlは最初にintフィールドにテキストを挿入させません。 –
これは、ユーザーが文字列値の整数フィールドを検索しようとしているためです。 – Thejas