SQL语句只接受id';小于6位MYSQL的

SQL语句只接受id';小于6位MYSQL的,mysql,sql,database,Mysql,Sql,Database,我试图理解为什么会发生这种情况,但我在互联网上找不到任何东西。 我有一个药物表(称为Medicamento),其中包含23600种元素。 当我尝试使用IdMed列获取元素时,它只获取少于6位的值示例1: SELECT * FROM `Medicamento` WHERE IdMed=100 例2: SELECT * FROM `Medicamento` WHERE IdMed=200703 此时,我认为没有创建具有该Id的med,因此我执行了最后一个查询,这使我不知道错误在哪里: S

我试图理解为什么会发生这种情况,但我在互联网上找不到任何东西。 我有一个药物表(称为Medicamento),其中包含23600种元素。 当我尝试使用IdMed列获取元素时,它只获取少于6位的值
示例1:

SELECT * FROM `Medicamento` WHERE IdMed=100 

例2:

SELECT * FROM `Medicamento` WHERE IdMed=200703 

此时,我认为没有创建具有该Id的med,因此我执行了最后一个查询,这使我不知道错误在哪里:

SELECT * FROM `Medicamento` WHERE IdMed>200702 
结果:

正如您所看到的,第一个元素是Id为200703的元素。我无法理解的是,为什么它接受Id为12700或100的元素,但不接受Id为6个数字的元素。我认为这可能是一个格式的问题,但我没有发现任何有用的东西

该表的数据取自2个不同的.xlsx文件,这就是我考虑格式的原因

对不起,我的英语不好。我希望大家能理解这个问题

编辑: 表数据类型

简而言之,您的值正在失去精度,因为您使用的数据类型不准确
float
用于浮点数,理想情况下通常不应用作主键。最好将其改为
整数
数据类型。从评论的外观来看,这可能不可行,您最好创建另一个列,并将其用作主键。例如,在
200703
中可能发生的情况是,它可能以
200703.000001
2007002.9999
的形式存储在数据库中,并且您正在搜索与数据库存储它的方式不完全匹配的值


建议您将当前的
float
列改为
double
列,以保持小数点以外的精度

简而言之,由于使用了不准确的数据类型,您的值正在失去精度
float
用于浮点数,理想情况下通常不应用作主键。最好将其改为
整数
数据类型。从评论的外观来看,这可能不可行,您最好创建另一个列,并将其用作主键。例如,在
200703
中可能发生的情况是,它可能以
200703.000001
2007002.9999
的形式存储在数据库中,并且您正在搜索与数据库存储它的方式不完全匹配的值


建议您将当前的
float
列改为
double
列,以保持小数点以外的精度

表的数据结构是什么样的…特别是问题中的列再次检查问题,我已经编辑了它表的定义是什么?应该对ID使用INT数据类型,而不是FLOAT。请参阅以了解这两种数据类型之间的主要区别。我对MySQL不是特别熟悉,但可能是因为您的数据类型是
float
而不是某种整数类型。编辑:忍者8秒。表的数据结构是什么样的…特别是问题中的列再次检查问题,我已经编辑了它。表的定义是什么?你应该对ID使用INT数据类型,而不是FLOAT。请参阅以了解这两种数据类型之间的主要区别。我对MySQL不是特别熟悉,但可能是因为您的数据类型是
float
而不是某种整数类型。编辑:忍者被攻击8秒。