WHERE子句和INT(11)数据类型在MySQL中不工作

问题描述:

在我的user表中,我有名为SeedNumber的列,它被声明为INT(11)。在MySQL数据库中INT始终由4个字节表示,括号中的数字11并不意味着INT值将限制在11位数字上。 This blog解释得很好。WHERE子句和INT(11)数据类型在MySQL中不工作

这是MySQL的声明领域SeedNumber

enter image description here

通过使用现场SeedNmb,我希望获取用户。使用以下SQL查询:

SELECT * FROM user WHERE SeedNmb=99999617 

在我的表中,值99999617是当前最大值。该查询返回了我的用户没有任何问题,就像是证明下面的图片:

enter image description here

最近,一个新用户SeedNumber等于12561361.注册当我在使用电子邮件搜索栏新用户查询时,我得到以下结果:

select * from user where email like ("[email protected]"); 

下面是结果:

Result when searching by email

但是,当我搜索用户与查询:

SELECT * FROM user WHERE SeedNmb=12561361 

我没有得到任何结果,而这是一个问题。下面的图片展示了我的问题:

No result when searching by SeedNumber

这似乎是一个where子句不知何故没有工作,用户不会返回结果。

值12 561 361不大于99 999 617,它是SeedNumber表中的当前最大值。

任何帮助,将不胜感激。

+0

可能是面板错误?你可以在'phpmyadmin'中试试你的查询吗? – RIKI 2014-10-20 10:26:36

+0

即使使用PHP执行查询时,我也没有得到用户。这就是为什么我在mysql工作台中执行相同查询的原因。 – MrD 2014-10-20 10:30:02

+0

我使用SSH连接到数据库。我试图执行相同的查询,并得到“空集”结果,所以这消除了MySQL Workbench导致该问题的可能性。 – MrD 2014-10-20 10:34:34

您是否已经尝试将引号之间的数字?

SELECT * FROM `user` WHERE `SeedNmb` = '12561361'; 
+0

我做了,但仍然是相同的结果:( – MrD 2014-10-20 13:03:12

+1

这很奇怪,你有没有试过它与表名和列名周围的严重口音?(严重口音是左边的1旁边的标志),因为用户也是所以当你不使用严重口音时,它会认为它是MYSQL中的预定义操作。[link](http://en.wikipedia.org/wiki/Grave_accent) – Refilon 2014-10-20 13:14:27

+0

What @ Dennise89 says try try \ 'SeedNmb \''在你的查询中 – Rimble 2014-10-20 13:43:42

尝试在MySQL命令行中。 我想你的IDE有些问题。

+0

我使用SSH连接到数据库。我试图执行相同的查询,并得到“空集”结果,所以这消除了MySQL Workbench导致该问题的可能性。 – MrD 2014-10-20 13:40:28

我遇到了同样的问题,并通过重新创建索引来修复它。我注意到,如果我使用“like”而不是“=”,查询就可以工作。解释计划表明,索引仅在使用“=”时使用,而不是在使用“like”时使用,因此我删除并重新创建索引。该查询再次开始工作。