2009-05-01 59 views
213

Tôi đang cố gắng tìm ra loại dữ liệu thập phân của một cột trong SQL Server. Tôi cần để có thể lưu trữ các giá trị như 15.5, 26.9, 24.7, 9.8, v.v.Làm thế nào để lưu trữ các giá trị thập phân trong SQL Server?

Tôi đã gán decimal(18, 0) cho kiểu dữ liệu cột nhưng điều này không cho phép tôi lưu trữ các giá trị này.

Cách phù hợp để thực hiện việc này là gì?

Trả lời

421

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 đó sẽ làm tốt!

Điều đó cung cấp cho bạn tổng số 18 số gồm 18 chữ số, 4 trong số đó sau dấu thập phân (và 14 trước dấu thập phân).

+171

Để làm rõ DECIMAL (18,4) là 14 chữ số trước dấu thập phân và 4 chữ số sau dấu thập phân. – Powerlord

+19

Phải - tổng cộng 18 chữ số, 4 trong số đó sau dấu thập phân - chính xác. –

+0

Cảm ơn Chúa .. tất cả các quyền có lẽ không ... cảm ơn @Jeff Atwood for StackOverflow. điền vào chỗ trống của MSDN (mặc dù MSDN là rất tốt lên đến một điểm) kể từ khi thành lập! – Coops

93

Bạn nên sử dụng như sau:

DECIMAL(m,a) 

m là số tổng chữ 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ó mô tả cho tất cả các kiểu dữ liệu.

+8

Uhm, 'a' là số lượng tối đa _digits sau dấu thập phân_, không phải là số _max của dấu thập phân_ (trong đó bạn chỉ có thể có một điểm, tất nhiên). –

+0

Nó thường được ký hiệu là DECIMAL (p, s) trong đó p là viết tắt của độ chính xác (số tối đa cho phép trong một số) và s là viết tắt của thang đo (số lượng tối đa cho phép sau dấu thập phân). – RBT

2

Các câu trả lời khác là đúng. Giả sử các ví dụ của bạn phản ánh đầy đủ các khả năng 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ì là đủ.

38

Cài đặt cho Decimal là độ chính xác và tỷ lệ hoặc ngôn ngữ thông thường, 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 đặt PI vào số Decimal(18,0), số này sẽ được ghi là 3?

Nếu bạn đặt PI vào Decimal(18,2), nó sẽ được ghi là 3.14?

Nếu bạn đặt PI vào Decimal(18,10) được ghi là 3.1415926535.

6

Trong MySQL DB decimal(4,2) chỉ cho phép nhập tổng cộng 4 chữ số. Như bạn thấy trong decimal(4,2), nó 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 trong cơ sở dữ liệu MySQL, nó sẽ hiển thị 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.

+0

Tại sao điều này có liên quan trong khi câu hỏi đã chỉ rõ rõ ràng Microsoft SQL Server? –

25

Trong hầu hết thời gian, tôi sử dụng số thập phân (9,2) có dung lượng lưu trữ tối thiểu (5 byte) theo loại thập phân sql.


chính xác => Bộ nhớ byte

  • 1 - 9 => 5
  • 10-19 => 9
  • 20-28 => 13
  • 29-38 => 17

Nó có thể lưu trữ từ 0 lên đến 9 999 999,99 (7 ​​chữ số infront + 2 chữ số đằng sau dấu thập phân = tổng 9 chữ số), đủ lớn cho hầu hết các giá trị.

-1
request.input("name", sql.Decimal, 155.33)    // decimal(18, 0) 
request.input("name", sql.Decimal(10), 155.33)   // decimal(10, 0) 
request.input("name", sql.Decimal(10, 2), 155.33)  // decimal(10, 2) 
Các vấn đề liên quan