2014-10-14 3 views
-2

У меня есть таблица с идентификатором столбца INT (11). Когда я делаю:MySQL вставляет в таблицу с 00001 автоматически преобразуется в 1

insert into table (id) VALUES ('00001'); 

он преобразует его в 1. Я не против такого поведения, но мне интересно, если это изменится в будущих версиях MySQL. Есть ли документация или причина, почему это работает?

+2

что тип данных для столбца идентификаторов? –

+0

вы можете установить 'UNSINGNED ZEROFILL' фиксированной длины типа данных INT – diEcho

+0

, если вы хотите сохранить значения, поскольку они делают тип данных для id как varchar2, он должен быть целым или десятичным –

ответ

3

Это из-за флага ZEROFILL на колонке. Если флаг установлен, он добавляет нули в качестве дополнения к вашим номерам, чтобы они соответствовали общей ширине номера. Поэтому, если у вас есть INT(3) и вы INSERT1, вы получаете 001.

В вашем случае у вас, вероятно, есть INT(1), поэтому он просто усекает ваши начальные нули, потому что они не влияют на значение номера — только на дисплее номера.

What is the benefit of zerofill in MySQL?

+0

А, ок. Мое целое не заполнено нулем, а просто задается вопросом, почему он действительно сработал. Кажется, из-за нулевой заливки, почему она работает (хотя я ее не использую) –

Смежные вопросы