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

[SOLUCIONADO] Un campo de tipo varchar persistente

Estas en el tema de Un campo de tipo varchar persistente en el foro de Mysql en Foros del Web. Hola amigos, he usado mysql pero no soy nada experto como para poder encontrar la solucion a mi problema yo solo,POR FAVOR ALGUN EXPERTO QUE ...
  #1 (permalink)  
Antiguo 05/10/2015, 08:46
Avatar de HumFaJ  
Fecha de Ingreso: mayo-2015
Ubicación: Mexico
Mensajes: 12
Antigüedad: 8 años, 10 meses
Puntos: 0
Desacuerdo Un campo de tipo varchar persistente

Hola amigos, he usado mysql pero no soy nada experto como para poder encontrar la solucion a mi problema yo solo,POR FAVOR ALGUN EXPERTO QUE ME ORIENTE. He aqui la cuestion; tengo 21 campos en una tabla, 15 VARCHAR, 2 DATE, 1 TEXT Y 3 INT.

Uno de los campos de tipo INT no me guarda el valor que yo quiero si no lo cambio a tipo VARCHAR, no es ninguna llave foranea ni primaria, aunque trate de hacerlo por consola, es lo mismo, me inserta un valor distinto, el mismo, cuantas veces lo haga.

quiero guardar un numero de telefono de 10 digitos y me guarda esto 2147483647 ... ya le busque todo el fin de semana y nada
  #2 (permalink)  
Antiguo 05/10/2015, 09:07
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: Un campo de tipo varchar persistente

Es un tema recurrente, y es de manual...
Se llama "rango de representación de numeros binarios", y puedes verlo en este link: http://dev.mysql.com/doc/refman/5.6/...ger-types.html


Los números, en los sistemas de BBDD no existen como cifras, sino que se almacenan como binarios, según su tipo declarado Elos INT son enteros de 4 bytes de longitud, lo que representa 32 bits.
Si haces la conversión de un binario de 32 bits con todos unos (1), encontrarás que el maximo posible es 4.294.967.295, pero como se tiene que reservar la mitad de las representaciones posibles a los negativos, y además uno al menos se usa para el cero, cuando el INT es con signo, el máximo posible es -2147483648 a 2147483647... exactamente lo que obtienes.
¿Cuál es la solución?

En primer lugar, define de qué tipo de dato se trata, porque no todos los números se deben almacenar como tales, por ejemplo los telefónicos.
Los números telefónicos, dado que pueden contener ceros iniciales (DDI o DDL), no se acostumbra a ponerlos en campos numéricos. Un numero telefónico es conveniente que esté compuesto de dos campos: la característica o numero local de ciudad, y el numero propiamente dicho. Eso facilita las consultas.

Si además, el mayor numero posible es inferior a 4.294.967.295, y no necesitas negativos, simplemente declaralo INT UNSIGNED y tendrás lo que necesitas.
Pero si vas a usar numero mayores a ese 4.294.967.295, necesitarás un BIGINT, y no INT, ya que el rango de un BIGINT es de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 con signo, y 0 a 18.446.744.073.709.551.615 sin signo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/10/2015, 09:36
Avatar de HumFaJ  
Fecha de Ingreso: mayo-2015
Ubicación: Mexico
Mensajes: 12
Antigüedad: 8 años, 10 meses
Puntos: 0
Respuesta: Un campo de tipo varchar persistente

que grande! he entendido!, mi problema era por ese campo, desde un jsp no me permitía guardar en ninguno de los 20 campos restantes, era mas que capricho mio por no dejarlo en VARCHAR XD... MUCHAS GRACIAS POR RESPONDER Y AYUDARME.

Etiquetas: campo, numero, sql, tabla, tipo, varchar
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 05:43.