No sé cuál es la mejor manera de almacenarlo necesariamente, pero hay al menos una mejor opción que usar un varchar(39)
(o varchar(40)
si lo necesitaras firmado); en su lugar use a decimal(39,0)
. De los documentos de mysql :
Tipos de punto fijo (valor exacto)
Los tipos DECIMAL y NUMERIC almacenan valores de datos numéricos exactos. Estos tipos se utilizan cuando es importante preservar la precisión exacta, por ejemplo, con datos monetarios. En MySQL, NUMERIC se implementa como DECIMAL, por lo que las siguientes observaciones sobre DECIMAL se aplican igualmente a NUMERIC.
MySQL 5.1 almacena valores DECIMALES en formato binario. Antes de MySQL 5.0.3, se almacenaban como cadenas. Consulte la Sección 11.18, "Matemáticas de precisión".
En una declaración de columna DECIMAL, la precisión y la escala pueden especificarse (y generalmente se especifican); por ejemplo:
salary DECIMAL(5,2)
En este ejemplo, 5 es la precisión y 2 es la escala. La precisión representa el número de dígitos significativos que se almacenan para los valores, y la escala representa el número de dígitos que se pueden almacenar después del punto decimal.
El SQL estándar requiere que DECIMAL (5,2) pueda almacenar cualquier valor con cinco dígitos y dos decimales, por lo que los valores que se pueden almacenar en la columna de salario oscilan entre -999.99 y 999.99.
En SQL estándar, la sintaxis DECIMAL (M) es equivalente a DECIMAL (M, 0). Del mismo modo, la sintaxis DECIMAL es equivalente a DECIMAL (M, 0), donde la implementación permite decidir el valor de M. MySQL admite ambas formas variantes de sintaxis DECIMAL. El valor predeterminado de M es 10.
Si la escala es 0, los valores DECIMALES no contienen punto decimal ni parte fraccionaria.
El número máximo de dígitos para DECIMAL es 65, pero el rango real para una columna DECIMAL dada puede estar limitado por la precisión o la escala de una columna dada. Cuando a dicha columna se le asigna un valor con más dígitos después del punto decimal que los permitidos por la escala especificada, el valor se convierte a esa escala. (El comportamiento preciso es específico del sistema operativo, pero generalmente el efecto es el truncamiento al número permitido de dígitos).