Solo quiero saber cuál es el beneficio / uso de definir ZEROFILL
para INT
DataType en MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
mysql
types
unsigned-integer
diEcho
fuente
fuente
zerofill
no es estándar. " ElZEROFILL
atributo se ignora cuando una columna está involucrada en expresiones oUNION
consultas. Si almacena valores mayores que el ancho de visualización en una columna entera que tiene elZEROFILL
atributo, puede experimentar problemas cuando MySQL genera tablas temporales para algunas combinaciones complicadas. En estos casos , MySQL supone que los valores de datos se ajustan al ancho de visualización de la columna. "Respuestas:
Cuando selecciona una columna con tipo
ZEROFILL
, rellena el valor visualizado del campo con ceros hasta el ancho de visualización especificado en la definición de columna. Los valores más largos que el ancho de visualización no se truncan. Tenga en cuenta que el uso deZEROFILL
también implicaUNSIGNED
.El uso
ZEROFILL
y el ancho de la pantalla no tienen efecto sobre cómo se almacenan los datos. Afecta solo cómo se muestra.Aquí hay un ejemplo de SQL que demuestra el uso de
ZEROFILL
:Resultado:
fuente
Un ejemplo para entender, donde el uso de
ZEROFILL
podría ser interesante:En Alemania, tenemos códigos postales de 5 dígitos. Sin embargo, esos códigos pueden comenzar con un cero, por lo que
80337
es un código postal válido para munic,01067
es un código postal de Berlín.Como puede ver, cualquier ciudadano alemán espera que los códigos postales se muestren como un código de 5 dígitos, por lo que se
1067
ve extraño.Para almacenar esos datos, puede usar un
VARCHAR(5)
oINT(5) ZEROFILL
mientras que el entero lleno de cero tiene dos grandes ventajas:1067
, todavía01067
regresaQuizás este ejemplo ayude a comprender el uso de
ZEROFILL
.fuente
Es una característica para personalidades perturbadas a las que les gustan las cajas cuadradas.
Inserta
pero cuando selecciona, rellena los valores
fuente
Ayuda en la ordenación correcta en el caso de que necesite concatenar este "entero" con otra cosa (otro número o texto) que deberá ordenarse como un "texto" en ese momento.
por ejemplo,
si necesita usar los números de campo entero (digamos 5) concatenados como A-005 o 10/0005
fuente
Sé que llego tarde a la fiesta, pero creo que el zerofill es útil para las representaciones booleanas de TINYINT (1). Nulo no siempre significa falso, a veces no lo quieres. Al rellenar con un minúsculo, está efectivamente convirtiendo esos valores a INT y eliminando cualquier confusión que su aplicación pueda tener sobre la interacción. Su aplicación puede tratar esos valores de manera similar al tipo de datos primitivo True = Not (0)
fuente
666
lo que prefiero mantener esta respuesta tal como está;-)
fuente
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
fuente
Si especifica ZEROFILL para una columna numérica, MySQL agrega automáticamente el atributo UNSIGNED a la columna.
Los tipos de datos numéricos que permiten el atributo UNSIGNED también permiten SIGNED. Sin embargo, estos tipos de datos están firmados de forma predeterminada, por lo que el atributo FIRMADO no tiene ningún efecto.
La descripción anterior está tomada del sitio web oficial de MYSQL.
fuente
CEROFILL
Esto significa esencialmente que si el valor entero 23 se inserta en una columna INT con un ancho de 8, el resto de la posición disponible se rellenará automáticamente con ceros.
Por lo tanto
se convierte en:
fuente