Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tỷ lệ được xác định như thế nào khi chia thập phân và bigint?

Đối số 1:3 AS DECIMAL(19, 8)

Đối số 2:27 AS DECIMAL (18, 0) - độ chính xác mặc định là 18, tỷ lệ mặc định là 0 (BIGINT đã được chuyển đổi thành DECIMAL do ưu tiên loại)

p1 = 19
p2 = 18
s1 = 8
s2 = 0

Hãy tính ví dụ 1:

precision: (19 - 8 + 0) + MAX(6, 8 + 18 + 1) = 38
scale:     MAX(6, 8 + 18 + 1) = 27

Đối với tất cả các ví dụ của bạn, bạn sẽ luôn nhận được thang tối đa 27.

 0.111111111111111111111111111 (27)
11.111111111111111111111111111 (27)
 0.005488934750153684025643277 (27)

Toàn bộ phần chỉ có các chữ số cần thiết (1), (2), (1).

Đối với tôi mọi thứ đều hoàn toàn hợp lệ.

Câu trả lời này dựa trên kết quả của @Paul White từ Decimal Truncation In division .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sql Server 2008 Hàng đến cột

  2. Nhận Ngày bắt đầu theo Quý và Ngày kết thúc trong năm

  3. So sánh ngày giờ của SQL Server ở các định dạng khác nhau

  4. Cách loại bỏ tiêu đề cột khi gửi kết quả truy vấn qua email trong SQL Server (T-SQL)

  5. Có thể khôi phục giao dịch sau khi được cam kết và kết nối bị đóng không?