DECIMAL
Sintassi
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
Spiegazione
Un numero a virgola fissa compresso ed "esatto". M
è il numero totale di cifre (la precisione) e D
è il numero di cifre dopo il punto decimale (la scala). Il punto decimale e, per i segni negativi, il segno "-" non sono conteggiati in M
. Se D
è 0
, i valori non avranno il punto decimale nè una parte frazionale; durante le INSERT il valore verrà arrotondato al numero più vicino. Il numero massimo di cifre (M
) per il tipo DECIMAL
è 65. Il numero massimo di decimali supportati (D
) è 30
. Se D
è omesso, il valore predefinito è 0
. Se M
è omesso, il valore predefinito è 10
.
UNSIGNED
, se specificato, proibisce i valori negativi.
ZEROFILL
, se specificato, riempe il numero di zeri, fino a raggiungere il totale di cifre indicato in M
.
Tutti i calcoli di base (+, -, *, /) sulle colonne DECIMAL
sono effettuati con una precisione di 65 cifre decimali.
Esempi
MariaDB [test]> CREATE TABLE t1 (d DECIMAL UNSIGNED ZEROFILL); Query OK, 0 rows affected (0.40 sec) MariaDB [test]> insert into t1 values (1),(2),(3),(4.0),(5.2),(5.7); Query OK, 6 rows affected, 2 warnings (0.16 sec) Records: 6 Duplicates: 0 Warnings: 2 Note (Code 1265): Data truncated for column 'd' at row 5 Note (Code 1265): Data truncated for column 'd' at row 6 MariaDB [test]> select * from t1; +------------+ | d | +------------+ | 0000000001 | | 0000000002 | | 0000000003 | | 0000000004 | | 0000000005 | | 0000000006 | +------------+ 6 rows in set (0.00 sec) MariaDB [test]> insert into t1 values (-7); ERROR 1264 (22003): Out of range value for column 'd' at row 1 MariaDB [test]>