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

[SOLUCIONADO] Guardar numero con logitud 12

Estas en el tema de Guardar numero con logitud 12 en el foro de Mysql en Foros del Web. Hola a todos como estan veran tengo este problema tengo un campo en mi bd que tiene el siguiente atributo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver ...
  #1 (permalink)  
Antiguo 25/09/2015, 12:38
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Guardar numero con logitud 12

Hola a todos como estan veran tengo este problema tengo un campo en mi bd que tiene el siguiente atributo
Código MySQL:
Ver original
  1. `jc_empresa_ruc` int(11) DEFAULT NULL,
y quiere guardar este cantidad de numero
20506007268
le he cambiado la longitud a 15 pero igual no me deja insertar mas de 10 números porque?
  #2 (permalink)  
Antiguo 25/09/2015, 12:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Guardar numero con logitud 12

Porque lo estás declarando como entero con signo.
Lo que debes entender es que ese numero entre paréntesi NO representa la longitud del numero como cifra. Se usa para otro destino.
El rango numérico a almacenar está definido por el tipo de dato. Algo que puede sver perfectamente en el manual de referencia.

Si quieres guardar numeros enteros sin signo, recuerda los rangos de cada tipo:
Cita:
- TINYINT: 0 a 255.
- SMALLINT: 0 a 65.535.
- MEDIUMINT: 0 a 16.777.215
- INT: 0 a 4.294.967.295.
- BIGINT: 0 a 18.446.744.073.709.551.615
https://dev.mysql.com/doc/refman/5.6...ger-types.html
__________________
¿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 25/09/2015, 12:54
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Guardar numero con logitud 12

mmm por lo que comentas estoy usando INT pero lo que no entiendo es a que te refieres numero entero con Signo
  #4 (permalink)  
Antiguo 25/09/2015, 13:08
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Guardar numero con logitud 12

Lei la documentación que dejaste y le agregue el atribut unsigned asi
Código MySQL:
Ver original
  1. `jc_empresa_ruc` int(11) unsigned DEFAULT NULL,
con lo que digo que el valor no sera negativo hasta hai no tengo problemas pero igual no me guardar este mismo numero
20506007268
  #5 (permalink)  
Antiguo 25/09/2015, 13:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Guardar numero con logitud 12

Ok...
¿Sabías que los números en una base de datos NO SE ALMACENAN COMO CIFRAS, sino como binarios?
Bueno, la pregunta es: ¿En un sistema de represnetación de 8 bits, qué numeros son estos bytes en binario?:
1) 00010111
2) 10010111

Simple: El primero es el 15, el segundo el -15, si los consideramos como numeros con signo,
pero sino, el primero es el 15, y el segundo el 143.

¿Se va entendiendo?
Bueno, cada tipo de columna está representada por el ancho en bytes, tienes como limite de representación la cifra que te devolvería un binario de 4 (nibble), 8, 16, 32 y 64 bits, y que están en los rango que ya te mencioné. El que se usen con signo o sin signo es algo que está determinado por el sistema de almacenamiento que se le indica a la base al declarar el tipo de columna.

Un BIGINT sin signo es
Código MySQL:
Ver original
  1. ...
  2. ...

El numero que encuentras entre paréntesis tiene que ver con otras cosas, que son irrelevantes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 25/09/2015, 13:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Guardar numero con logitud 12

Cita:
Iniciado por BlackJccl1 Ver Mensaje
Lei la documentación que dejaste y le agregue el atribut unsigned asi
Código MySQL:
Ver original
  1. `jc_empresa_ruc` int(11) unsigned DEFAULT NULL,
con lo que digo que el valor no sera negativo hasta hai no tengo problemas pero igual no me guardar este mismo numero
20506007268
O sea que NO entendiste de entrada a qué me refiero con BIGINT, y ni siquiera miraste los ejemplso que te pasé, ni tampoco los que tiene el manual, ¿no es así?

Si el INT UNSIGNED solo puede guardar hasta
4294967295
y tu quieres
20506007268,
es obvio, que INT no te alcanza. Tienes que pasar al siguiente.
__________________
¿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 25/09/2015, 14:27
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Guardar numero con logitud 12

Si ves la hora de los Post son al mismo tiempo ambos por eso no lei lo anterior que escribiste bueno ya lo solucione y entiendo cuando te refieres a Binarios y pues de todas maneras Gracias por tu atención a este tema lo que hice fue cambiar el tipo de Dato a varchar con longitud de 11 y desde la aplicación restrinjo al usuario que guarde solo 11 caracteres y que seas de tipo Numero no se si es muy optimo claro si obviar la explicacion anterior de gnzsoloyo algo mas que acotar probe con

Código MySQL:
Ver original
  1. ----
  2. BIGINT con 11
  3. ----

y funciona pues como dije anteriormente la explicación de gnzsoloyo valga la redundancia esta bien

Última edición por BlackJccl1; 25/09/2015 a las 14:45
  #8 (permalink)  
Antiguo 25/09/2015, 15:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Guardar numero con logitud 12

Vas a guardar un valor entero convertido a una cadena porque no pudiste crear el valor correcto?? Lo que hay que ver en fin desarolladores......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 25/09/2015, 15:10
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Guardar numero con logitud 12

Cita:
Iniciado por Libras Ver Mensaje
Vas a guardar un valor entero convertido a una cadena porque no pudiste crear el valor correcto?? Lo que hay que ver en fin desarolladores......
Un valor pero como mencione probe ambas opciones claro que la mas optima es usar BIGINT claro que ya es decisión de cada uno
  #10 (permalink)  
Antiguo 25/09/2015, 16:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Guardar numero con logitud 12

No exactamente...
En BBDD no hay "decisiones de cada uno" que sean buenas alternativas en cuanto a estructuración de datos se refiere. Un error de tipo, y los resultados a nivel performance y consulta son desastrosos.
Un número jamás debe almacenarse como VARCHAR. Eso genera múltiples problemas que terminan impactando negativamente en la base de datos. ASi como tampoco debes guardar como números ciertos valores numéricos, porque en algunas condiciones no lo son, como es el caso de los numeros de telefono, prefijos de área y otro largo etcétera.
Lo que debes analizar es de qué dato se trata, cual es su ambito de existencia, y cual es el requerimiento máximo que va a soportar.
Asi, por ejemplo, puedes poner un VARCHAR(1000) para una URL, pero, la verdad, ¿conoces muchas URL que requieran 1000 caracteres?
Otro caso es el de los documentos personales. Puedes guardarlos como números, pero no sirve para todos los países, porque algunos usan alfanuméricos.

En otras palabras, los tipos de dato se deben analizar caso por caso. Dos sistemas aparentemente iguales, almacenando los mismos datos, podrían requerir tipos de columna diferente para el mismo dato, dependiendo del contexto del uso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 25/09/2015, 17:09
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años, 7 meses
Puntos: 2
Respuesta: Guardar numero con logitud 12

Bueno tu lo has dicho es el contexto del que lo requiere por eso colo que mi solución y quien lo vea mejor usarlo pues hai esta Bueno Gracias por su atención al tema

Etiquetas: campo, numero
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 13:55.