В чем преимущество zerofill в MySQL?

Я просто хочу знать, какова польза / использование определения ZEROFILL для INT DataType в MySQL ?

 `id` INT UNSIGNED ZEROFILL NOT NULL 

Когда вы выбираете столбец типа ZEROFILL, он выдает отображаемое значение поля с нулями до ширины отображения, указанной в определении столбца. Значения дольше, чем ширина экрана, не усекаются. Обратите внимание, что использование ZEROFILL также подразумевает UNSIGNED.

Использование ZEROFILL и ширина дисплея не влияют на то, как хранятся данные. Это влияет только на то, как оно отображается.

Вот пример SQL, который демонстрирует использование ZEROFILL:

 CREATE TABLE yourtable (x INT(8) ZEROFILL NOT NULL, y INT(8) NOT NULL); INSERT INTO yourtable (x,y) VALUES (1, 1), (12, 12), (123, 123), (123456789, 123456789); SELECT x, y FROM yourtable; 

Результат:

  xy 00000001 1 00000012 12 00000123 123 123456789 123456789 

Один пример, чтобы понять, где использование ZEROFILL может быть интересным:

В Германии у нас есть 5-значные почтовые индексы. Однако эти коды могут начинаться с нуля, поэтому 80337 является действительным почтовым индексом для munic, 01067 является почтовым индексом Берлина.

Как вы видите, любой гражданин Германии ожидает, что zipcodes будут отображаться в виде 5-значного кода, поэтому 1067 выглядит странно.

Чтобы сохранить эти данные, вы можете использовать VARCHAR (5) или INT (5) ZEROFILL, тогда как нулевое целое число имеет два больших преимущества:

  1. Лот меньше места на жестком диске
  2. Если вы вставляете 1067, вы все равно получаете 01067 обратно

Возможно, этот пример помогает понять использование ZEROFILL.

Это функция для нарушенных личностей, которые любят квадратные коробки.

Вы вставляете

 1 23 123 

но когда вы выберете, он набрасывает значения

 000001 000023 000123 

Это помогает в правильной сортировке в случае, когда вам понадобится объединить это «целое» с чем-то другим (другим номером или текстом), который затем будет отсортирован как «текст».

например,

если вам нужно будет использовать число целых чисел (скажем, 5), объединенное как A-005 или 10/0005

Я знаю, что опаздываю на вечеринку, но я считаю, что zerofill полезен для булевых представлений TINYINT (1). Null не всегда означает False, иногда вы этого не хотите. Завершив tinyint, вы эффективно конвертируете эти значения в INT и удаляете любое приложение, которое может возникнуть при взаимодействии. Затем ваше приложение может обрабатывать эти значения способом, аналогичным примитивному типу True = Not (0)

 mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL); Query OK, 0 rows affected (0.04 sec) mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM tin3; +----+------------+ | id | val | +----+------------+ | 1 | 0000000012 | | 2 | 0000000007 | | 4 | 0000000101 | +----+------------+ 3 rows in set (0.00 sec) mysql> mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2; +-------------+ | LENGTH(val) | +-------------+ | 10 | +-------------+ 1 row in set (0.01 sec) mysql> SELECT val+1 FROM tin3 WHERE id=2; +-------+ | val+1 | +-------+ | 8 | +-------+ 1 row in set (0.00 sec) 

Если вы укажете ZEROFILL для числового столбца, MySQL автоматически добавит атрибут UNSIGNED в столбец.

Числовые типы данных, которые разрешают атрибут UNSIGNED, также разрешают SIGNED. Однако эти типы данных по умолчанию подписаны, поэтому атрибут SIGNED не действует.

Вышеприведенное описание взято с официального сайта MYSQL.

ZEROFILL

Это по существу означает, что если целочисленное значение 23 вставляется в столбец INT с шириной 8, то остальная часть доступной позиции будет автоматически дополняться нулями.

следовательно

 23 

будет выглядеть так:

 00000023 

При использовании в сочетании с необязательным (нестандартным) атрибутом ZEROFILL, заполнение пробелов по умолчанию заменяется нулями. Например, для столбца, объявленного как INT (4) ZEROFILL, значение 5 получается как 0005.

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

  • Поиск типа объекта в C ++
  • Как запросить json-столбец для пустых объектов?
  • Разница между и
  • Каковы различия между типами значений и ссылочными типами в C #?
  • make arrayList.toArray () возвращает более конкретные типы
  • .NET Integer vs Int16?
  • Строка к двоичной в C #
  • java: конвертировать float в String и String для float
  • Как напечатать тип переменной в Rust?
  • почему byte + = 1 компилировать, но byte = byte + 1 нет?
  • Как вы знаете переменный тип в java?
  • Давайте будем гением компьютера.