SQL语句仅使用ID少于6位的数字

时间:2018-07-03 14:35:47

标签: mysql sql database

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

SELECT * FROM `Medicamento` WHERE IdMed=100 

enter image description here

示例2:

SELECT * FROM `Medicamento` WHERE IdMed=200703 

enter image description here

在这一点上,我认为未创建带有该ID的med,因此我进行了最后一个查询,这使我不知道错误在哪里:

SELECT * FROM `Medicamento` WHERE IdMed>200702 

结果: enter image description here

如您所见,第一个元素是带有200703 ID的元素。我不明白的是,为什么要带Id的元素(例如12700或100),却不带ID为6的元素。我以为可能是格式问题,但没有发现任何帮助。

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

PD:对不起,我的英语不好。我希望问题得到理解。

编辑: 表数据类型 enter image description here

1 个答案:

答案 0 :(得分:2)

简而言之,由于使用的数据类型不准确,您的价值正在失去准确性。 float用于浮点数,理想情况下通常不应将其用作主键。最好的选择是将其更改为integer数据类型。从注释的外观看,这可能不可行,您最好创建另一列,并使用THAT作为主键。例如,发生200703的情况,它可能以200703.0000012007002.99999的形式存储在数据库中,而您正在寻找的值与数据库的方式不完全匹配存储它。

作为建议,您可能需要将当前的float列更改为double列,以保留小数点后的精度。