3

MySQL 查询返回一条记录,即使条件不满足。

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

没有与此处给出的 WHERE 条件相匹配的记录。但是 MySQl 返回一条 order_id = 10000 的记录

看起来 WHERE 条件忽略了引号内的 alpha。如果查询中有任何问题或者这是 MySql 错误,请帮助我

4

4 回答 4

3

我假设这order_id是一个int,并且 MySql 隐式转换 varchar'10000R'以匹配列的数据类型,从而去除尾随'r'.

请参阅MySql 文档中的“表达式评估中的类型转换”。

于 2012-11-16T21:36:27.767 回答
2

order_id 可能是某种类型的整数字段。MySQL 会将字符串 '1000R' 转换为整数 1000。这就是为什么您要返回结果。这不是一个错误。

于 2012-11-16T21:36:22.637 回答
0

确保您的 order_id 字段不是整数或其他数字字段。如果是,它可能会忽略尾随的 alpha。

MySQL整数比较忽略尾随字母字符

于 2012-11-16T21:37:19.170 回答
-1

MySql 表数据类型是 VARCHAR。请更改您的数据类型。

于 2013-01-21T10:15:06.827 回答