Я пытаюсь понять, почему это происходит, но я не мог найти ничего в Интернете. У меня есть таблица meds (называемая Medicamento), в которой есть 23600 элементов. Когда я пытаюсь взять элемент, используя столбец IdMed, он принимает значения менее 6 цифр.
Пример 1:
SELECT * FROM 'Medicamento' WHERE IdMed=100
Пример 2:
SELECT * FROM 'Medicamento' WHERE IdMed=200703
В этот момент я подумал, что медика с этим Идентификатором не была создана, поэтому я сделал этот последний запрос, который заставил меня не знать, где ошибка:
SELECT * FROM 'Medicamento' WHERE IdMed>200702
Результат:
Как вы видите, первым элементом является идентификатор 200703. То, что я не могу понять, это то, почему он принимает элементы с Id, например 12700 или 100, но не принимает элементы с идентификатором из 6 чисел. Я думал, что это может быть вопрос форматов, но я не нашел ничего полезного.
Данные таблицы взяты из двух разных файлов.xlsx, поэтому я подумал о форматах.
PD: Извините за мой плохой английский. Я надеюсь, что проблема понятна.
EDIT: Типы данных таблицы
В двух словах, что происходит, ваша ценность - это потеря точности, потому что вы используете неточный тип данных. float
- для чисел с плавающей запятой, и в идеале не следует обычно использовать в качестве первичного ключа. лучше всего изменить это на integer
тип данных. По мнению комментариев, это может быть нецелесообразным, вам, вероятно, лучше всего создать другой столбец и вместо этого использовать THAT в качестве первичного ключа. Вероятно, что это происходит, например, с 200703
, он потенциально хранится в базе данных как 200703.000001
или 2007002.99999
и вы ищете значение, которое не является точным соответствием тому, как его хранит база данных.
В качестве предложения вы можете изменить текущий столбец float
на double
столбец вместо этого, чтобы сохранить немного больше точности за пределами десятичной точки.