Listado completo de tutoriales

23 - Atributo zerofill en una columna de una tabla.


Ver video

Cualquier campo numérico puede tener otro atributo extra "zerofill".

"zerofill" rellena con ceros los espacios disponibles a la izquierda.

Por ejemplo, creamos la tabla "libros", definiendo los campos "codigo" y "cantidad" con el atributo "zerofill":

 create table libros(
  codigo int(6) zerofill auto_increment,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  precio decimal(5,2) unsigned,
  cantidad smallint zerofill,
  primary key (codigo)
 );

Note que especificamos el tamaño del tipo "int" entre paréntesis para que muestre por la izquierda ceros, cuando los valores son inferiores al indicado; dicho parámetro no restringe el rango de valores que se pueden almacenar ni el número de digitos.

Al ingresar un valor de código con menos cifras que las especificadas (6), aparecerán ceros a la izquierda rellenando los espacios; por ejemplo, si ingresamos "33", aparecerá "000033". Al ingresar un valor para el campo "cantidad", sucederá lo mismo.

Si especificamos "zerofill" a un campo numérico, se coloca automáticamente el atributo "unsigned".

Cualquier valor negativo ingresado en un campo definido "zerofill" es un valor inválido.

Servidor de MySQL instalado en forma local.

Ingresemos al programa "Workbench" y ejecutemos el siguiente bloque de instrucciones SQL:

drop table if exists libros;

create table libros(
  codigo int(6) zerofill auto_increment,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  precio decimal(5,2) unsigned,
  cantidad smallint zerofill,
  primary key (codigo)
 );

insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Martin Fierro','Jose Hernandez','Planeta',34.5,200);
insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Aprenda PHP','Mario Molina','Emece',45.7,50);
insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Cervantes y el quijote','Borges','Paidos',23,40);

select * from libros;

insert into libros (codigo,titulo,autor,editorial,precio,cantidad)
  values('545','El aleph', 'Borges', 'Emece',33,20);

select * from libros;

-- genera un error en versiones nuevas de MySQL 8.0 ya que no permite valores negativos con zerofill
insert into libros (codigo,titulo,autor,editorial,precio,cantidad)
  values(-400,'Matematica estas ahi', 'Paenza', 'Paidos',15.2,-100);

select * from libros;

Que nos generan una salida similar a esta:

MySQL zerofill

Retornar