MYSQL неправильно сравнивает big int(20)
Я новичок в MySQL... У меня есть таблица "table1", где столбец "item_no" это bigint(20). Когда я пытался выбрать конкретную строку из таблицы на основе item_no, он не возвращает точную строку. Вместо этого он возвращает набор строк, который соответствует первым нескольким символам. Почему так и как должен быть мой запрос, чтобы получить точную строку.
table1
----------
item_no BIGINT(20) --> Primary key
value VARCHAR(40)
У меня есть следующие значения для item_no в моей таблице
item_no value
----------
10000000161402118444 blah
10000000161402118613 blah
10000000161402118984 blah
10000000161402119080 blah
10000000161402119151 blah
10000000161402119275 blah
10000000161402119680 blah
10000000161402119866 blah
10000000161402119946 blah
А это мой запрос
SELECT item_no FROM table1 WHERE item_no = 10000000161402119946
Ожидаемый результат
item_no
----------
10000000161402119946
Но мой запрос вернул следующее:
item_no
----------
10000000161402119275
10000000161402119680
10000000161402119866
10000000161402119946
Я не могу понять... Пожалуйста, помогите мне....
1 ответ
Решение
Ваши номера превышают лимит bigint. Если вы сделаете ваше поле без знака, то оно будет работать.
create table biginttest2 (id bigint unsigned);