Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/04/2013, 11:42
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?

Hola JamesWhannel:

Al margen de lo que ya te comentaron skyz y gnzsoloyo, creo que estás equivocando el enfoque del problema. Una cosas es lo que almacena la Base de Datos y otra muy distinta lo que le presentas al usuario...

Me parece una mala idea el que pienses en cambiar el tipo de dato de tu columna sólo para presentar los dos ceros a la izquiera... si bien ponerlo como VARCHAR solucionaría esta situación, la verdad no le veo razón para tener que hacerlo... este tipos de cambios en la BD pueden traerte muchos dolores de cabeza, sobre todo si estamos hablando de que el campo sea llave primaria (lo cual veo muy posible).

En lo particular, creo que la opción ZEROFILL es la más indicada... Esta opción te permite rellenar con ceros a la izquierda hasta alcanzar la longitud que indicaste al campo... observa este ejemplo:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE tabla
  2.     -> (  numero_empleado INT(6) UNSIGNED ZEROFILL NOT NULL,
  3.     ->   PRIMARY KEY (numero_empleado));
  4. Query OK, 0 rows affected (0.46 sec)
  5.  
  6. mysql> INSERT INTO tabla VALUES (1),(9897),
  7.     -> (002374), (123456), (123456789);
  8. Query OK, 5 rows affected (0.11 sec)
  9. Records: 5  Duplicates: 0  Warnings: 0

Observa que estoy introduciendo valores numéricos de distintas longitudes, así por ejemplo inserto el 1 o el 002374, a la BD esto no lo interesa, hablando de valores numéricos un cero a la izquierda NO ES SIGNIFICATIVO, sin embargo al momento de la creación de la tabla especifiqué que los números DEBEN TENER UNA LONGITUD DE 6 CARACTERES, al momento de hacer UN SELECT A LA TABLA obtengo lo siguiente:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-----------------+
  3. | numero_empleado |
  4. +-----------------+
  5. |          000001 |
  6. |          002374 |
  7. |          009897 |
  8. |          123456 |
  9. |       123456789 |
  10. +-----------------+
  11. 5 rows in set (0.00 sec)

es decir, independientemente de que inserté un 1 o un 9897, al hacer el SELECT se muestra con los ceros a la izquierda que especifiqué... esto no quiere decir que en la BD se inserte el valor tal cual, ya que se siguen insertando como números, es solo presentación... al momento de hacer una búsqueda, no importa si pones los ceros o no... SIGUE SIENDO UN NUMERO.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla WHERE numero_empleado = 9897;
  2. +-----------------+
  3. | numero_empleado |
  4. +-----------------+
  5. |          009897 |
  6. +-----------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT * FROM tabla WHERE numero_empleado = 009897;
  10. +-----------------+
  11. | numero_empleado |
  12. +-----------------+
  13. |          009897 |
  14. +-----------------+
  15. 1 row in set (0.00 sec)

Saludos
Leo.