2013-05-18 14 views
28

Ho provato a utilizzare DECIMAL con (2,2) ma non mi consentirà di usarlo.Come memorizzare decimale in MySQL?

Desidero semplicemente memorizzare un numero, ad esempio 7.50 o 10.50. Ho bisogno di mantenere entrambi i numeri dopo il decimale, ma quando aggiorno il database reimposta i valori a 0,99. Eventuali suggerimenti?

+0

possibile duplicato di [Come memorizzare valori decimali in SQL Server?] (Http://stackoverflow.com/questions/813287/how-to-store-decimal-values-in-sql-server) – Arun

risposta

12

Essi sintassi è decimale (M, D)

M - lunghezza totale

D - destra cifre del punto decimale

http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html

La sintassi della dichiarazione per una colonna DECIMAL è DECIMAL (M , D). Gli intervalli di valori per gli argomenti in MySQL 5.6 sono i seguenti:

M è il numero massimo di cifre (la precisione). Ha una gamma di 1 a 65. (Le vecchie versioni di MySQL consentito un range da 1 a 254.)

D è il numero di cifre a destra del punto decimale (la scala ). Ha una gamma da 0 a 30 e non deve essere maggiore di M.

2
CREATE TABLE IF NOT EXISTS `table_name` (`id` int(11) NOT NULL AUTO_INCREMENT,`cost` DECIMAL(10, 2) NOT NULL); 

Questo renderà colonna costo contenere un totale di 10 cifre, 8 prima e 2 dopo il punto decimale.

-3

Cambia il vostro campo da INT a galleggiare

0

From mysql doc:

La sintassi di dichiarazione di una colonna DECIMAL è decimale (M, D). Gli intervalli di valori per gli argomenti sono i seguenti:

  • M è il numero massimo di cifre (la precisione). Ha un intervallo di da 1 a 65.
  • D è il numero di cifre a destra del punto decimale (la scala). Ha una gamma da 0 a 30 e non deve essere più grande di M.

NB: - M non è totale. di cifre prima del punto decimale + totale n. di cifre dopo il punto decimale.

Nel tuo caso, 7.50 ha un totale di 3 cifre e 10.50 ha un numero totale di 4 cifre. Ma il massimo dichiarato di cifre per la colonna è 2 in modo che possa memorizzare un valore massimo di due cifre. Non puoi nemmeno memorizzare 1 perché è 1,00 cioè 3 cifre totali. Quindi il valore massimo consentito di 2 cifre nella colonna è .99.

Se si desidera memorizzare xx.xx allora si deve dichiarare (4, 2), dove 4 è M e 2 è D.

Se si desidera memorizzare un numero illimitato alla massima dimensione consentita di mysql allora si può dichiarare una colonna con (65, 30).

N. max. di cifre prima della virgola = M - D

0
CREATE TABLE `salary` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`salary` DECIMAL(10,2) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

DECIMAL(10,2) indica che salary terrà un totale di 10 cifre di cui 2 sarà dopo il decimale.

cioè

8 cifre prima decimale e 2 cifre dopo decimale.

Problemi correlati