Mysql查询选择错误的记录

Mysql查询选择错误的记录,mysql,select,Mysql,Select,我有一个表用户作为 id name status --------------------- 1 user1 1 2 user2 1 3 user3 1 当我运行此查询时,它将选择id为2的记录。为什么会这样?只有id为2时,我需要选择id为2的记录。我做了这样的询问 SELECT * FROM ( `users` ) WHERE `id` = '2a290cf764371'; 如何解决此问题?发生这种情况是因为您正在检查字

我有一个表用户作为

id    name     status
---------------------
1     user1      1
2     user2      1
3     user3      1
当我运行此查询时,它将选择id为2的记录。为什么会这样?只有id为2时,我需要选择id为2的记录。我做了这样的询问

SELECT *
FROM (
`users`
)
WHERE `id` = '2a290cf764371';

如何解决此问题?

发生这种情况是因为您正在检查字符串与整数,因此
mysql
将字符串自动广播为整数,
2a290cf764371
的整数是
2
,不要进行这种比较,我建议您在执行查询之前将每个ID强制转换为
int
,因为存在隐式类型转换。这意味着将
'2a290cf764371'
转换为
2
,然后与
id
进行比较。要解决此问题,您必须在客户端上添加一些类型检查验证