WHERE子句和INT(11)数据类型在MySQL中不工作
在我的user
表中,我有名为SeedNumber
的列,它被声明为INT(11)
。在MySQL数据库中INT
始终由4个字节表示,括号中的数字11并不意味着INT值将限制在11位数字上。 This blog解释得很好。WHERE子句和INT(11)数据类型在MySQL中不工作
这是MySQL的声明领域SeedNumber
:
通过使用现场SeedNmb
,我希望获取用户。使用以下SQL查询:
SELECT * FROM user WHERE SeedNmb=99999617
在我的表中,值99999617是当前最大值。该查询返回了我的用户没有任何问题,就像是证明下面的图片:
最近,一个新用户SeedNumber等于12561361.注册当我在使用电子邮件搜索栏新用户查询时,我得到以下结果:
select * from user where email like ("[email protected]");
下面是结果:
但是,当我搜索用户与查询:
SELECT * FROM user WHERE SeedNmb=12561361
我没有得到任何结果,而这是一个问题。下面的图片展示了我的问题:
这似乎是一个where子句不知何故没有工作,用户不会返回结果。
值12 561 361不大于99 999 617,它是SeedNumber
表中的当前最大值。
任何帮助,将不胜感激。
您是否已经尝试将引号之间的数字?
SELECT * FROM `user` WHERE `SeedNmb` = '12561361';
尝试在MySQL命令行中。 我想你的IDE有些问题。
我使用SSH连接到数据库。我试图执行相同的查询,并得到“空集”结果,所以这消除了MySQL Workbench导致该问题的可能性。 – MrD 2014-10-20 13:40:28
我遇到了同样的问题,并通过重新创建索引来修复它。我注意到,如果我使用“like”而不是“=”,查询就可以工作。解释计划表明,索引仅在使用“=”时使用,而不是在使用“like”时使用,因此我删除并重新创建索引。该查询再次开始工作。
可能是面板错误?你可以在'phpmyadmin'中试试你的查询吗? – RIKI 2014-10-20 10:26:36
即使使用PHP执行查询时,我也没有得到用户。这就是为什么我在mysql工作台中执行相同查询的原因。 – MrD 2014-10-20 10:30:02
我使用SSH连接到数据库。我试图执行相同的查询,并得到“空集”结果,所以这消除了MySQL Workbench导致该问题的可能性。 – MrD 2014-10-20 10:34:34