Não sei qual é a melhor maneira necessariamente de armazená-lo - mas há pelo menos uma opção melhor do que usar um varchar(39)
(ou varchar(40)
se você precisar assiná-lo); em vez disso, use a decimal(39,0)
. Nos documentos do mysql :
Tipos de ponto fixo (valor exato)
Os tipos DECIMAL e NUMERIC armazenam valores de dados numéricos exatos. Esses tipos são usados quando é importante preservar a precisão exata, por exemplo, com dados monetários. No MySQL, NUMERIC é implementado como DECIMAL, portanto, as seguintes observações sobre DECIMAL se aplicam igualmente a NUMERIC.
O MySQL 5.1 armazena valores DECIMAIS em formato binário. Antes do MySQL 5.0.3, eles eram armazenados como strings. Consulte a Seção 11.18, “Matemática de precisão”.
Em uma declaração de coluna DECIMAL, a precisão e a escala podem ser (e geralmente são) especificadas; por exemplo:
salary DECIMAL(5,2)
Neste exemplo, 5 é a precisão e 2 é a escala. A precisão representa o número de dígitos significativos armazenados para valores e a escala representa o número de dígitos que podem ser armazenados após o ponto decimal.
O SQL padrão exige que DECIMAL (5,2) possa armazenar qualquer valor com cinco dígitos e duas casas decimais, portanto, os valores que podem ser armazenados na coluna de salário variam de -999,99 a 999,99.
No SQL padrão, a sintaxe DECIMAL (M) é equivalente a DECIMAL (M, 0). Da mesma forma, a sintaxe DECIMAL é equivalente a DECIMAL (M, 0), onde a implementação é permitida para decidir o valor de M. O MySQL suporta essas duas formas variantes da sintaxe DECIMAL. O valor padrão de M é 10.
Se a escala for 0, os valores DECIMAL não conterão ponto decimal ou parte fracionária.
O número máximo de dígitos para DECIMAL é 65, mas o intervalo real de uma determinada coluna DECIMAL pode ser restringido pela precisão ou escala de uma determinada coluna. Quando uma coluna é atribuída a um valor com mais dígitos após o ponto decimal do que o permitido pela escala especificada, o valor é convertido nessa escala. (O comportamento preciso é específico do sistema operacional, mas geralmente o efeito é truncamento para o número permitido de dígitos.)