Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?

Estas en el tema de ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos? en el foro de Mysql en Foros del Web. Bueno, resulta que tengo un proyecto en el que la empresa tiene asignado un numero para cada uno de sus trabajadores, por ejemplo el 009897 ...
  #1 (permalink)  
Antiguo 22/04/2013, 10:08
 
Fecha de Ingreso: septiembre-2012
Mensajes: 26
Antigüedad: 11 años, 7 meses
Puntos: 2
¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?

Bueno, resulta que tengo un proyecto en el que la empresa tiene asignado un numero para cada uno de sus trabajadores, por ejemplo el 009897 entonces me habian pedido que en la base de datos pusiera 9897 pero ahora que ya están usando el sistema quieren que les ponga 002374 por que están acostumbrados a poner el 00 al inicio -_- asi que al tratar de modificar un numero en la base de datos (uso PHPMyAdmin) y le pongo el 00 no se guardan los 00 a la izquierda y sigue siendo 9897.

¿Qué hago?
  #2 (permalink)  
Antiguo 22/04/2013, 11:13
Avatar de skyz  
Fecha de Ingreso: abril-2010
Mensajes: 170
Antigüedad: 14 años
Puntos: 1
Respuesta: ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?

Bueno segun lo que entiendo, los usuarios desean guardar y buscar el numero del empleado en el formato:

00algun_numero

pues en la columna que guardas esa informacion debe estar como entero, tendrias que cambiarla a cadena (nvarchar), para que tenga el formato que deseas.
  #3 (permalink)  
Antiguo 22/04/2013, 11:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?

NVARCHAR no es un tipo de dato en MySQL. Deberás usar VARCHAR, e incluso puedes usar CHAR.
Fuera de eso, es cierto, mientras sea numérico, los ceros a la izquierda no existen (si lo recuerdas, también te lo decían en la escuela), por ello deberás controlar muy bien en programación el problema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 22/04/2013, 11:42
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #5 (permalink)  
Antiguo 22/04/2013, 11:45
Avatar de skyz  
Fecha de Ingreso: abril-2010
Mensajes: 170
Antigüedad: 14 años
Puntos: 1
Respuesta: ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
NVARCHAR no es un tipo de dato en MySQL. Deberás usar VARCHAR, e incluso puedes usar CHAR.
Cierto tienes razon me equivoque con el tipo de dato de cadena que maneja SQL Server :P
  #6 (permalink)  
Antiguo 22/04/2013, 11:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?



Eso pasa cuando andamos saltando de DBMS...



En este momento a mi se me hacen enredos haciendo stored procedures para Oracle y MySQL.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 22/04/2013, 14:56
 
Fecha de Ingreso: septiembre-2012
Mensajes: 26
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: ¿Cómo poder colocar 0 al inicio en la informacion de una Base de Datos?

Muy interesante lo que expones leonardo_jose, desconocia eso del ZEROFILL

Gracias a todos por sus respuestas.

Etiquetas: informacion, inicio, php, poder
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:42.