mysql查询显示错误结果

ldfqzlk8  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(460)

我有一个像这样的数据库表

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

当我运行这个查询时,它应该不会显示任何行,因为没有带的行 101foo2 价值:
选择*from tablename,其中id='101foo2'
我得到了一个没有 foo2 单词

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

如何显示id为的行 101 如果我的问题是 ID = '101foo2'

2guxujil

2guxujil1#

你是混血儿。 ID 是整数(或数字)。你把它比作一个字符串。因此,mysql需要决定使用哪种类型进行比较。使用什么类型?嗯,一根绳子?不,一个号码。使用前导数字将字符串转换为数字。所以,它变成了 101 还有火柴。
你应该只比较数字和数字,字符串和字符串。您可以尝试将代码编写为:

SELECT * FROM tableName WHERE ID = 101foo2

然而,你会得到一个错误。另一种可能是强制转换为字符串:

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

相关问题