Предложение SQL принимает только идентификаторы менее 6 цифр MYSQL

0

Я пытаюсь понять, почему это происходит, но я не мог найти ничего в Интернете. У меня есть таблица meds (называемая Medicamento), в которой есть 23600 элементов. Когда я пытаюсь взять элемент, используя столбец IdMed, он принимает значения менее 6 цифр.
Пример 1:

SELECT * FROM 'Medicamento' WHERE IdMed=100 

Изображение 174551

Пример 2:

SELECT * FROM 'Medicamento' WHERE IdMed=200703 

Изображение 174551

В этот момент я подумал, что медика с этим Идентификатором не была создана, поэтому я сделал этот последний запрос, который заставил меня не знать, где ошибка:

SELECT * FROM 'Medicamento' WHERE IdMed>200702 

Результат: Изображение 174551

Как вы видите, первым элементом является идентификатор 200703. То, что я не могу понять, это то, почему он принимает элементы с Id, например 12700 или 100, но не принимает элементы с идентификатором из 6 чисел. Я думал, что это может быть вопрос форматов, но я не нашел ничего полезного.

Данные таблицы взяты из двух разных файлов.xlsx, поэтому я подумал о форматах.

PD: Извините за мой плохой английский. Я надеюсь, что проблема понятна.

EDIT: Типы данных таблицы Изображение 174551

  • 1
    как выглядит ваша структура данных для таблицы ... особенно для рассматриваемого столбца
  • 0
    Проверьте вопрос еще раз, я его отредактировал
Показать ещё 7 комментариев
Теги:
database

1 ответ

2
Лучший ответ

В двух словах, что происходит, ваша ценность - это потеря точности, потому что вы используете неточный тип данных. float - для чисел с плавающей запятой, и в идеале не следует обычно использовать в качестве первичного ключа. лучше всего изменить это на integer тип данных. По мнению комментариев, это может быть нецелесообразным, вам, вероятно, лучше всего создать другой столбец и вместо этого использовать THAT в качестве первичного ключа. Вероятно, что это происходит, например, с 200703, он потенциально хранится в базе данных как 200703.000001 или 2007002.99999 и вы ищете значение, которое не является точным соответствием тому, как его хранит база данных.

В качестве предложения вы можете изменить текущий столбец float на double столбец вместо этого, чтобы сохранить немного больше точности за пределами десятичной точки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню