Tôi không biết cách tốt nhất nhất là lưu trữ nó - nhưng ít nhất có một lựa chọn tốt hơn so với sử dụng varchar(39)
(hoặc varchar(40)
nếu bạn cần ký tên); thay vì sử dụng a decimal(39,0)
. Từ các tài liệu mysql :
Các loại điểm cố định (chính xác-giá trị)
Các loại DECIMAL và NUMERIC lưu trữ các giá trị dữ liệu số chính xác. Các loại này được sử dụng khi điều quan trọng là bảo toàn độ chính xác chính xác, ví dụ với dữ liệu tiền tệ. Trong MySQL, NUMERIC được triển khai dưới dạng DECIMAL, do đó, các nhận xét sau đây về DECIMAL cũng áp dụng tương tự cho NUMERIC.
MySQL 5.1 lưu các giá trị DECIMAL ở định dạng nhị phân. Trước MySQL 5.0.3, chúng được lưu trữ dưới dạng chuỗi. Xem Phần 11,18, Chính xác Toán Toán.
Trong một khai báo cột DECIMAL, độ chính xác và tỷ lệ có thể được (và thường là) được chỉ định; ví dụ:
salary DECIMAL(5,2)
Trong ví dụ này, 5 là độ chính xác và 2 là thang đo. Độ chính xác đại diện cho số chữ số có nghĩa được lưu trữ cho các giá trị và thang đo biểu thị số chữ số có thể được lưu trữ sau dấu thập phân.
SQL tiêu chuẩn yêu cầu DECIMAL (5,2) có thể lưu trữ bất kỳ giá trị nào với năm chữ số và hai số thập phân, do đó, các giá trị có thể được lưu trữ trong phạm vi cột lương từ -999,99 đến 999,99.
Trong SQL tiêu chuẩn, cú pháp DECIMAL (M) tương đương với DECIMAL (M, 0). Tương tự, cú pháp DECIMAL tương đương với DECIMAL (M, 0), trong đó việc triển khai được phép quyết định giá trị của M. MySQL hỗ trợ cả hai dạng cú pháp DECIMAL biến thể này. Giá trị mặc định của M là 10.
Nếu tỷ lệ là 0, các giá trị DECIMAL không chứa phần thập phân hoặc phần phân số.
Số chữ số tối đa cho DECIMAL là 65, nhưng phạm vi thực tế cho một cột DECIMAL nhất định có thể bị hạn chế bởi độ chính xác hoặc tỷ lệ cho một cột nhất định. Khi một cột như vậy được gán một giá trị có nhiều chữ số theo dấu thập phân hơn mức cho phép theo tỷ lệ được chỉ định, giá trị được chuyển đổi sang tỷ lệ đó. (Hành vi chính xác là đặc thù của hệ điều hành, nhưng nhìn chung hiệu ứng là cắt bớt số chữ số cho phép.)