3

条件が満たされない場合でも、MySQL クエリはレコードを返します。

SELECT * FROM `orders` WHERE order_id = '10000R'

ここで指定された WHERE 条件に一致するレコードはありません。しかし、MySQl は order_id = 10000 のレコードを返します

引用符内のアルファを無視する WHERE 条件のように見えます。クエリに問題がある場合、またはこれが MySql のバグである場合は、助けてください

4

4 に答える 4

3

私はそれが であり、MySql が列のデータ型に一致するように varchar を暗黙的にキャストしていると仮定してorder_idintます。'10000R'これにより、末尾の が削除され'r'ます。

MySql ドキュメントの「式の評価における型変換」を参照してください。

于 2012-11-16T21:36:27.767 に答える
2

order_id はおそらく何らかのタイプの整数フィールドです。MySQL は文字列 '1000R' を整数 1000 にキャストします。そのため、結果が返されます。バグではありません。

于 2012-11-16T21:36:22.637 に答える
0

order_id フィールドが整数またはその他の数値フィールドでないことを確認してください。そうである場合、末尾のアルファを無視している可能性があります。

MySQL 整数比較は末尾の英字を無視します

于 2012-11-16T21:37:19.170 に答える
-1

MySql テーブルのデータ型は VARCHAR です。データ型を変更してください。

于 2013-01-21T10:15:06.827 に答える