mysql查询显示错误结果

时间:2019-01-03 17:10:51

标签: mysql sql phpmyadmin

我的数据库表如下所示

+======+===========+============+
|  ID  | user Name |user surname|
+======+===========+============+
| 100  |  name     |  surname   |
| 101  |  name     |  surname   |
| 102  |  name     |  surname   |
+===============================+

当我运行此查询时,该查询不应显示任何行,因为不存在具有101foo2值的行:

  

SELECT * FROM tableName WHERE ID ='101foo2'

我得到的ID不带foo2字的结果

+======+===========+============+
|  ID  | user Name |user surname|
+======+===========+============+
| 101  |  name     |  surname   |
+===============================+

如果我的查询是101,它将如何显示ID为ID = '101foo2'的行

1 个答案:

答案 0 :(得分:2)

您正在混合类型。 ID是整数(或数字)。您正在将其与字符串进行比较。因此,MySQL需要确定用于比较的类型。使用什么类型?好吧,一串?编号字符串将使用前导数字转换为数字。因此,它变成101并匹配。

您实际上应该只将数字与数字进行比较,将字符串与字符串进行比较。您可以尝试将代码编写为:

SELECT * FROM tableName WHERE ID = 101foo2

但是,您会得到一个错误。另一种可能性是强制转换为字符串:

SELECT * FROM tableName WHERE CAST(ID as CHAR) = '101foo2'