Uso, Beneficios y Alternativa de Zerofill en MySQL
Hoy, nos educaremos sobre el uso, los beneficios y la alternativa del atributo ZEROFILL
en MySQL.
el Uso y Beneficio del Atributo ZEROFILL
en MySQL
El beneficio de usar el atributo ZEROFILL
es que no tiene nada que ver con la entrada y el almacenamiento de datos, sino que solo afecta cómo se mostrará el valor de salida. MySQL agrega automáticamente UNSIGNED
cuando se usa ZEROFILL
mientras se define la columna.
Cada vez que creamos una tabla definiendo una columna (atributo) con el atributo ZEROFILL
, rellena la salida (valor resultante) de una columna con ceros a la izquierda hasta el ancho de visualización especificado en una definición de columna.
Código de ejemplo:
CREATE TABLE table_one (
column_one INT(8) ZEROFILL NOT NULL,
column_two INT(8) NOT NULL
);
INSERT INTO table_one (column_one, column_two) VALUES
(9, 9),
(98, 98),
(987, 987),
(987654321, 987654321);
SELECT column_one, column_two FROM table_one;
Producción :
+------------+------------+
| column_one | column_two |
+------------+------------+
| 00000009 | 9 |
| 00000098 | 98 |
| 00000987 | 987 |
| 987654321 | 987654321 |
+------------+------------+
4 rows in set (0.00 sec)
Vea el ejemplo anterior donde el ancho del atributo column_one
es 8. Los valores que son más largos que el ancho de visualización especificado no se truncan.
Consulte el último registro en la salida de la tabla anterior, 987654321
.
Supongamos que almacenamos valores más grandes que el ancho de visualización en el campo entero que tiene el atributo ZEROFILL
. Podemos experimentar problemas cuando MySQL genera tablas temporales para uniones
complicadas.
El servidor MySQL asume que el valor de los datos se ajusta al ancho de visualización del campo (columna). Las columnas involucradas en consultas o expresiones UNION
ignorarán el atributo ZEROFILL
.
En cuanto a MySQL 8.0.17, el atributo ZEROFILL
está obsoleto para los tipos de datos numéricos. Por lo tanto, deberíamos esperar el soporte para el atributo ZEROFILL
porque los anchos de visualización de los tipos de datos enteros se eliminarán en las futuras versiones de MySQL.
Función alternativa del atributo ZEROFILL
en MySQL
Entonces, podemos usar las alternativas que producen los mismos efectos para estos atributos. Por ejemplo, podemos usar LPAD()
para agregar ceros a la izquierda hasta el ancho de la pantalla o almacenar números formateados en el campo CHAR
.
Consulte el siguiente fragmento de código.
SELECT LPAD(column_one,8,0) FROM table_one;
Producción :
+----------------------+
| LPAD(column_one,8,0) |
+----------------------+
| 00000009 |
| 00000098 |
| 00000987 |
| 98765432 |
+----------------------+
4 rows in set (0.001 sec)
No solo podemos usar LPAD()
para rellenar ceros a la izquierda de la columna de tipo INT
, sino también usarlo para el valor de tipo VARCHAR()
de la siguiente manera.
SELECT LPAD('Hello',8,'??') FROM table_one;
Producción :
+----------------------+
| LPAD('Hello',8,'??') |
+----------------------+
| ???Hello |
| ???Hello |
| ???Hello |
| ???Hello |
+----------------------+
4 rows in set (0.00 sec)