ここにコードがあります
mysql> SELECT id FROM tbl WHERE id = '1h';
+----+
| id |
+----+
| 1 |
+----+
1 row in set
実際、ID 1 のフィールドがあります (ただし、'1h' ではありません)。
以下は MySQL ドキュメントからの抜粋です: http://dev.mysql.com/doc/refman/5.1/en/type-conversion.html
mysql> SELECT 1 > '6x';
-> 0
mysql> SELECT 7 > '6x';
-> 1
したがって、このバグは文書化されています。問題は、そのような動作の理由と、これを char 記号で文字列をキャストしないように修正する方法です。すべてのフィールド値を次のようにキャストできます
mysql> SELECT id FROM tbl WHERE cast(`id`, BINARY) = '1h';
しかし、私はこの変種があまり好きではありません