2013-05-18 59 views
28

Tôi đã thử sử dụng DECIMAL với (2,2) nhưng nó sẽ không cho phép tôi sử dụng.Làm thế nào để lưu trữ số thập phân trong MySQL?

Tôi chỉ muốn lưu trữ một số, ví dụ: 7,50 hoặc 10,50. Tôi cần giữ cả hai số sau dấu thập phân, nhưng khi tôi làm mới cơ sở dữ liệu, nó sẽ đặt lại giá trị thành 0,99. Bất kỳ đề xuất?

+0

bản sao có thể có của [Cách lưu trữ giá trị thập phân trong SQL Server?] (Http://stackoverflow.com/questions/813287/how-to-store-decimal-values-in-sql-server) – Arun

Trả lời

12

Họ Cú pháp DECIMAL (M, D)

M - tổng chiều dài

D - chữ số bên phải dấu thập phân

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

Cú pháp khai báo cho một cột DECIMAL là DECIMAL (M , D). Các dãy giá trị cho các đối số trong MySQL 5.6 như sau:

M là số chữ số tối đa (độ chính xác). Nó có một phạm vi 1 đến 65. (Các phiên bản cũ hơn của MySQL cho phép phạm vi từ 1 đến 254.)

D là số chữ số ở bên phải dấu thập phân (thang đo ). Nó có một phạm vi từ 0 đến 30 và phải không lớn hơn M.

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

Điều này sẽ làm cho cột chi phí giữ tổng cộng 10 chữ số, 8 trước và 2 sau dấu thập phân.

-3

Thay đổi lĩnh vực của bạn từ INT nổi

0

From mysql doc:

Cú pháp khai cho một cột thập phân là DECIMAL (M, D). Phạm vi giá trị cho đối số như sau:

  • M là số chữ số tối đa (độ chính xác). Nó có một phạm vi của 1 đến 65.
  • D là số chữ số ở bên phải của dấu thập phân (tỷ lệ). Nó có một phạm vi từ 0 đến 30 và phải không lớn hơn M.

NB: - M là tổng số không. các chữ số trước dấu thập phân + tổng số không. các chữ số sau dấu thập phân.

Trong trường hợp của bạn, 7.50 có tổng số không có 3 chữ số và 10.50 có tổng số không có 4 chữ số. Nhưng mức tối đa được khai báo là không. các chữ số cho cột là 2 để nó có thể lưu trữ giá trị tối đa hai chữ số. Bạn thậm chí không thể lưu trữ 1 vì đó là 1,00 tức là tổng số 3 chữ số. Vì vậy, giá trị tối đa cho phép 2 chữ số trong cột là .99.

Nếu bạn muốn lưu trữ xx.xx sau đó bạn phải khai báo (4, 2), nơi 4 là M và 2 là D.

Nếu bạn muốn lưu trữ bất kỳ số lượng tối đa kích thước cho phép của mysql thì bạn có thể khai báo một cột với (65, 30).

Số không tối đa. các chữ số trước dấu thập phân = 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) chỉ ra rằng salary sẽ tổ chức tổng cộng 10 chữ số trong đó 2 sẽ được sau khi thập phân.

tức là

8 chữ số trước số thập phân và 2 chữ số sau dấu thập phân.

Các vấn đề liên quan