Non so quale sia il modo migliore per archiviarlo, ma c'è almeno un'opzione migliore rispetto all'utilizzo di un varchar(39)
(o varchar(40)
se ne avevi bisogno firmato); invece usa a decimal(39,0)
. Dai documenti mysql :
Tipi a virgola fissa (valore esatto)
I tipi DECIMAL e NUMERIC memorizzano valori esatti di dati numerici. Questi tipi vengono utilizzati quando è importante preservare la precisione esatta, ad esempio con i dati monetari. In MySQL, NUMERIC è implementato come DECIMAL, quindi le seguenti osservazioni su DECIMAL si applicano ugualmente a NUMERIC.
MySQL 5.1 memorizza i valori DECIMAL in formato binario. Prima di MySQL 5.0.3, erano archiviati come stringhe. Vedere la Sezione 11.18, "Precisione matematica".
In una dichiarazione di colonna DECIMAL, la precisione e la scala possono essere (e solitamente sono) specificate; per esempio:
salary DECIMAL(5,2)
In questo esempio, 5 è la precisione e 2 è la scala. La precisione rappresenta il numero di cifre significative memorizzate per i valori e la scala rappresenta il numero di cifre che è possibile memorizzare dopo il punto decimale.
SQL standard richiede che DECIMAL (5,2) sia in grado di memorizzare qualsiasi valore con cinque cifre e due decimali, quindi i valori che possono essere memorizzati nella colonna di stipendio vanno da -999,99 a 999,99.
In SQL standard, la sintassi DECIMAL (M) è equivalente a DECIMAL (M, 0). Allo stesso modo, la sintassi DECIMAL è equivalente a DECIMAL (M, 0), dove l'implementazione è autorizzata a decidere il valore di M. MySQL supporta entrambe queste forme varianti di sintassi DECIMAL. Il valore predefinito di M è 10.
Se la scala è 0, i valori DECIMAL non contengono punti decimali o parti frazionarie.
Il numero massimo di cifre per DECIMAL è 65, ma l'intervallo effettivo per una determinata colonna DECIMAL può essere limitato dalla precisione o dalla scala per una determinata colonna. Quando a tale colonna viene assegnato un valore con più cifre che seguono il punto decimale di quello consentito dalla scala specificata, il valore viene convertito in quella scala. (Il comportamento preciso è specifico del sistema operativo, ma generalmente l'effetto è il troncamento al numero consentito di cifre.)