Câu trả lời:
DECIMAL(18,0)
sẽ cho phép 0 chữ số sau dấu thập phân.
Sử dụng một cái gì đó như DECIMAL(18,4)
thay vào đó nên làm tốt!
Điều đó cung cấp cho bạn tổng cộng 18 chữ số , 4 trong số đó sau dấu thập phân (và 14 trước dấu thập phân).
decimal(4,2)
cho phép 2 chữ số trước và 2 chữ số sau dấu thập phân. "4.5" có thể được lưu trữ không có vấn đề gì - và về mặt số lượng, "4.5" và "4.50" là giống hệt nhau
varchar
để lưu trữ giá trị thập phân !!
Bạn nên sử dụng như sau:
DECIMAL(m,a)
m
là tổng số chữ số mà số thập phân của bạn có thể có.
a
là số chữ số tối đa bạn có thể có sau dấu thập phân.
http://www.tsqltutorials.com/datatypes.php có các mô tả cho tất cả các kiểu dữ liệu.
Các cài đặt cho Decimal
độ chính xác và tỷ lệ của nó hoặc theo ngôn ngữ bình thường, một số có thể có bao nhiêu chữ số và bạn muốn có bao nhiêu chữ số ở bên phải dấu thập phân.
Vì vậy, nếu bạn đưa PI
vào một Decimal(18,0)
nó sẽ được ghi lại như 3
?
Nếu bạn đặt PI
vào một Decimal(18,2)
nó sẽ được ghi là 3.14
?
Nếu bạn đưa PI
vào Decimal(18,10)
được ghi là 3.1415926535
.
Trong hầu hết thời gian, tôi sử dụng số thập phân (9,2) chiếm ít bộ nhớ nhất (5 byte) trong loại thập phân sql.
Chính xác => byte lưu trữ
Nó có thể lưu trữ từ 0 đến 9 999 999,99 (trước 7 chữ số + 2 chữ số sau dấu thập phân = tổng 9 chữ số), đủ lớn cho hầu hết các giá trị.
Trong MySQL DB decimal(4,2)
cho phép chỉ nhập tổng cộng 4 chữ số. Như bạn thấy decimal(4,2)
, điều đó có nghĩa là bạn có thể nhập tổng cộng 4 chữ số trong đó hai chữ số có nghĩa là giữ sau dấu thập phân.
Vì vậy, nếu bạn nhập 100.0 vào cơ sở dữ liệu MySQL, nó sẽ hiển thị một lỗi như "Giá trị ngoài phạm vi cho cột".
Vì vậy, bạn chỉ có thể nhập trong phạm vi này: từ 00.00 đến 99.99.
Các câu trả lời khác là đúng. Giả sử ví dụ của bạn phản ánh đầy đủ các khả năng những gì bạn muốn là DECIMAL(3, 1)
. Hoặc, DECIMAL(14, 1)
sẽ cho phép tổng cộng 14 chữ số. Đó là công việc của bạn để suy nghĩ về những gì đủ.