Uso, Beneficios y Alternativa de Zerofill en MySQL

Mehvish Ashiq 20 junio 2023
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)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook