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);
Другие вопросы по тегам