WHERE句などでint型とchar型を比較すると、 どうやら暗黙的に型変換しちゃう罠があるみたいです。 PHPもそうですが、文字列と数値の比較では、 暗黙的に数値型に変換したうえで比較を行うようです。 例えばproductsテーブルがあったとして、 product_idが主キーでint型だったとします。 そのテーブルに、IDが10番のデータが登録されているとします 残念なことに以下のWHERE句の判定はtrueになってしまいます。 SELECT * FROM products WHERE product_id = '10 a' char型の「10 a」がint型の「10」に暗黙的に型変換されるからです。 ということでちゃんと比較するにはキャストをして型を合わせます。 SELECT * FROM products WHERE CAST(product_id AS CHAR) = '10 a