mysql按索引选择返回错误的选择

mysql按索引选择返回错误的选择,mysql,sql,select,Mysql,Sql,Select,我的表格如下: 当我这样做时: SELECT * FROM userslogin WHERE userid='2' 它返回正确的行,但当我返回时: SELECT * FROM userslogin WHERE userid='2**x**' 它还返回同一行。同样适用于: SELECT * FROM userslogin WHERE userid='**2abc**' 仅返回userid='2'行的正确查询是什么?因为您是以int形式查询,所以不需要引号 SELECT * FROM US

我的表格如下:

当我这样做时:

SELECT * FROM userslogin WHERE userid='2'
它返回正确的行,但当我返回时:

SELECT * FROM userslogin WHERE userid='2**x**'
它还返回同一行。同样适用于:

SELECT * FROM userslogin WHERE userid='**2abc**'

仅返回userid='2'行的正确查询是什么?

因为您是以int形式查询,所以不需要引号

 SELECT * FROM USERSLOGIN WHERE USERID = 2;

从userslogin中选择*其中userid=2As@RadimBača said
userid
是int,您提供了一个字符串值,所以这完全取决于mysql如何将其转换为int。这是mysql上的一个常见问题。Mysql尝试从字符串到整数的隐式转换,因为id定义为整数,并在第一个非整数字符处停止。实际上mysql是在帮你一个忙。比较任意两个项目的正确方法是使用相同的类型—在本例中为int.,而“feature”与索引无关。