SQL语句只接受id';小于6位MYSQL的
我试图理解为什么会发生这种情况,但我在互联网上找不到任何东西。 我有一个药物表(称为Medicamento),其中包含23600种元素。 当我尝试使用IdMed列获取元素时,它只获取少于6位的值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
示例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秒。