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]>

Commenti

Sto caricando i commenti......