9 ответов:
при выборе столбца с типом ZEROFILL он заполняет отображаемое значение поля нулями до ширины отображения, указанной в определении столбца. Значения, превышающие ширину дисплея, не усекаются. Обратите внимание, что использование ZEROFILL также подразумевает UNSIGNED.
использование ZEROFILL и ширины дисплея не влияет на то, как хранятся данные. Это влияет только на то, как она выглядит.
вот пример SQL, который демонстрирует использование Если:
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;результат:
x y 00000001 1 00000012 12 00000123 123 123456789 123456789
один пример для того, чтобы понять, где использование ZEROFILL может быть интересным:
в Германии, мы имеем 5 зипкодов числа. Однако эти коды могут начинаться с нуля, поэтому 80337 является действительным zipcode для munic, 01067 является zipcode Берлина.
Как вы видите, любой гражданин Германии ожидает, что zipcodes будет отображаться как 5-значный код, поэтому 1067 выглядит странно.
для хранения этих данных вы можете использовать VARCHAR(5) или INT (5) ZEROFILL, тогда как zerofilled integer имеет два больших преимущества:
- много меньше места для хранения на жестком диске
- если вы вставите 1067, вы все равно получите 01067 обратно
возможно, этот пример помогает понять использование ZEROFILL.
это функция для нарушенных личностей, которые любят квадратные коробки.
вставить
1 23 123но когда вы выбираете, он заполняет значения
000001 000023 000123
Это помогает в правильной сортировке в случае, если вам нужно будет объединения это " целое число "с чем-то еще (другое число или текст), которое затем потребуется отсортировать как" текст".
например,
Если вам нужно будет использовать целочисленные номера полей (скажем, 5) сцепляются как A-005 или 10/0005
Я знаю, что опаздываю на вечеринку, но я считаю, что zerofill полезен для булевых представлений TINYINT(1). Null не всегда означает False, иногда вы этого не хотите. Путем обнуления tinyint вы эффективно преобразуете эти значения в INT и удаляете любые путаницы, которые может иметь приложение ur при взаимодействии. Затем приложение может обрабатывать эти значения аналогично примитивному типу данных 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 к столбцу.
числовые типы данных, которые разрешают атрибут без знака, также разрешают подписанный. Однако эти типы данных подписаны по умолчанию, поэтому подписанный атрибут не имеет никакого эффекта.
выше описание взято с официального сайта MYSQL.
ZEROFILL
это по существу означает, что если целое значение 23 вставляется в столбец INT с шириной 8, то остальная часть доступной позиции будет автоматически дополнена нулями.
отсюда
23будет:
00000023
при использовании в сочетании с необязательный (нестандартный) атрибут Если заполнение по умолчанию пробелы заменяются нулями. Для например, для столбца, объявленного как INT (4) ZEROFILL, значение 5 равно полученные в качестве 0005.
Comments