Предложение SQL принимает только идентификаторы менее 6 цифр MYSQL - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь понять, почему это происходит, но я не смог ничего найти в интернете. У меня есть таблица лекарств (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

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

SELECT * FROM `Medicamento` WHERE IdMed>200702 

Результат: enter image description here

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

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

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

EDIT: Табличные типы данных enter image description here

1 Ответ

0 голосов
/ 03 июля 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...