Código MySQL:
y quiere guardar este cantidad de numeroVer original
20506007268
le he cambiado la longitud a 15 pero igual no me deja insertar mas de 10 números porque?
| |||
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:
y quiere guardar este cantidad de numeroVer original 20506007268 le he cambiado la longitud a 15 pero igual no me deja insertar mas de 10 números porque? |
| ||||
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: https://dev.mysql.com/doc/refman/5.6...ger-types.html - 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
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Guardar numero con logitud 12 Lei la documentación que dejaste y le agregue el atribut unsigned asi
Código MySQL:
con lo que digo que el valor no sera negativo hasta hai no tengo problemas pero igual no me guardar este mismo numeroVer original 20506007268 |
| ||||
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 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) |
| ||||
Respuesta: Guardar numero con logitud 12 Cita: 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í?
Iniciado por BlackJccl1 Lei la documentación que dejaste y le agregue el atribut unsigned asi
Código MySQL:
con lo que digo que el valor no sera negativo hasta hai no tengo problemas pero igual no me guardar este mismo numeroVer original 20506007268 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) |
| |||
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 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 |
| |||
Respuesta: Guardar numero con logitud 12 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 |
| ||||
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) |
| |||
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: |