我试图了解为什么会这样,但是我在互联网上找不到任何东西。
我有一张药物表(称为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
如您所见,第一个元素是带有200703 ID的元素。我不明白的是,为什么要带Id的元素(例如12700或100),却不带ID为6的元素。我以为可能是格式问题,但没有发现任何帮助。
表中的数据来自2个不同的.xlsx文件,这就是我考虑格式的原因。
PD:对不起,我的英语不好。我希望问题得到理解。
答案 0 :(得分:2)
简而言之,由于使用的数据类型不准确,您的价值正在失去准确性。 float
用于浮点数,理想情况下通常不应将其用作主键。最好的选择是将其更改为integer
数据类型。从注释的外观看,这可能不可行,您最好创建另一列,并使用THAT作为主键。例如,发生200703
的情况,它可能以200703.000001
或2007002.99999
的形式存储在数据库中,而您正在寻找的值与数据库的方式不完全匹配存储它。
作为建议,您可能需要将当前的float
列更改为double
列,以保留小数点后的精度。