Поля mysql int не усекаются - PullRequest
4 голосов
/ 28 ноября 2010

как все, что вы знаете, когда вы описываете поля varchar или integer, вы должны установить длину их ...

что-то вроде int (5) или varchar (5) ...

но при попытке добавить 123456 в оба поля .. в то время как поле varchar усекает значение, целочисленное поле не усекает его ...

Так какова цель описания длины int?

Ответы [ 5 ]

4 голосов
/ 28 ноября 2010

int(5) не делает то, что вы думаете: он задает целочисленное поле с шириной дисплея из 5 цифр, то есть числа короче 5 цифр будут дополнены пробелами.

В MySQL значения int всегда имеют ширину 4 байта и могут быть от -2 147 483 648 до 2 147 483 647.

См. http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html.

3 голосов
/ 02 декабря 2010

N in INT(N), указывающее длина отображения приложения ; Это очень вводило в заблуждение, из-за сходства синтаксиса с VARCHAR(N), и по понятным причинам его часто неправильно понимали. Это фактически бессмысленно для всех приложений, которые я видел.

Это относится ко всем TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT.

2 голосов
/ 28 ноября 2010

ОТ 10.2.Числовые типы

MySQL поддерживает расширение для необязательного указания ширины отображения целочисленных типов данных в скобках после базового ключевого слова для типа.Например, INT (4) определяет INT с шириной отображения четырех цифр.Эта необязательная ширина отображения может использоваться приложениями для отображения целочисленных значений, ширина которых меньше ширины, указанной для столбца, путем добавления их слева с пробелами.(То есть эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Независимо от того, используется ли она или нет, зависит от приложения.)

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

2 голосов
/ 28 ноября 2010

Размер типа INT не является ни битами, ни байтами.Это просто ширина экрана, которая используется, когда в поле указана ZEROFILL.

Подробное объяснение см. в этой статье блога .

2 голосов
/ 28 ноября 2010

Похоже, эта «длина» используется только для отображения: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Например, INT (4) определяет INT с шириной отображения четырех цифр. Эта необязательная ширина отображения может использоваться приложениями для отображения целочисленных значений, ширина которых меньше ширины, указанной для столбца, путем добавления их слева с пробелами. (То есть эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Независимо от того, используется она или нет, зависит от приложения.)

...