Я просто хочу знать, в чем выгода / использование определения ZEROFILL
для INT
DataType MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
mysql
types
unsigned-integer
diEcho
источник
источник
zerofill
это нестандартно. " Атрибут игнорируется , если столбец участвует в выражениях или запросов. Если вы сохраняете значения большие , чем ширина дисплея в целочисленном столбце , который имеет атрибут, то могут возникнуть проблемы , когда MySQL генерирует временные таблицы для некоторых сложных соединений. В этих случаях MySQL предполагает, что значения данных вписываются в ширину отображения столбца. "ZEROFILL
UNION
ZEROFILL
Ответы:
Когда вы выбираете столбец с типом,
ZEROFILL
он дополняет отображаемое значение поля нулями до ширины отображения, указанной в определении столбца. Значения, превышающие ширину экрана, не усекаются. Обратите внимание, что использованиеZEROFILL
также подразумеваетUNSIGNED
.Использование
ZEROFILL
и ширина отображения не влияет на то, как хранятся данные. Это влияет только на то, как это отображается.Вот пример SQL, демонстрирующий использование
ZEROFILL
:Результат:
источник
Один пример, чтобы понять, где использование
ZEROFILL
может быть интересно:В Германии у нас есть 5-значный почтовый индекс. Однако эти коды могут начинаться с нуля, поэтому
80337
действительный почтовый индекс для munic01067
- это почтовый индекс Берлина.Как видите, любой гражданин Германии ожидает, что почтовые индексы будут отображаться в виде 5-значного кода, поэтому
1067
выглядит странно.Чтобы сохранить эти данные, вы можете использовать a
VARCHAR(5)
илиINT(5) ZEROFILL
тогда как целое число с нулевым заполнением имеет два больших преимущества:1067
, вы все равно01067
вернетесьМожет быть, этот пример помогает понять использование
ZEROFILL
.источник
Это особенность для обеспокоенных личностей, которые любят квадратные коробки.
Вы вставляете
но когда вы выбираете, он дополняет значения
источник
Это помогает в правильной сортировке в том случае, если вам нужно объединить это «целое число» с чем-то другим (другим числом или текстом), которое затем необходимо будет отсортировать как «текст».
например,
если вам нужно будет использовать число целочисленного поля (скажем , 5) сцепляются , как A-005 или 10/0005
источник
Я знаю, что опаздываю на вечеринку, но считаю, что нулевое заполнение полезно для логических представлений TINYINT (1). Нуль не всегда означает Ложь, иногда вы этого не хотите. За счет нулевого заполнения tinyint вы эффективно конвертируете эти значения в INT и удаляете любые путаницы, которые могут возникнуть у приложения при взаимодействии. Затем ваше приложение может обрабатывать эти значения аналогично примитиву типа True = Not (0)
источник
666
таком, поэтому я предпочел бы оставить этот ответ как есть;-)
источник
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
источник
Если вы указываете ZEROFILL для числового столбца, MySQL автоматически добавляет атрибут UNSIGNED в столбец.
Числовые типы данных, которые разрешают атрибут UNSIGNED, также разрешают SIGNED. Однако эти типы данных подписаны по умолчанию, поэтому атрибут SIGNED не имеет никакого эффекта.
Приведенное выше описание взято с официального сайта MYSQL.
источник
ZEROFILL
По сути, это означает, что если целое значение 23 будет вставлено в столбец INT с шириной 8, тогда оставшаяся часть доступной позиции будет автоматически дополнена нулями.
следовательно
будет выглядеть так:
источник