2012-04-10 6 views
8

Tôi có hai cột trong bảng được điền bằng giá trị số nguyên. Đối với mỗi bản ghi, tôi muốn chia các giá trị của hai cột đó và định dạng đầu ra sao cho dấu thập phân được di chuyển đến các vị trí bên phải.SQL Cast từ int đến số thập phân

Ví dụ: nếu tôi có giá trị của hai cột cho một bản ghi là 4 và 1 và tôi muốn chia 1 cho 4 (để 1/4) thì tôi muốn đầu ra là 25,00.

Đây là điều cuối cùng tôi đã cố gắng một chút trước:

CAST(Total AS Decimal(2))/CAST(TotalAnswers AS Decimal(2)) AS 'Percent' 

tôi đã không thể tìm thấy một lời giải thích cú pháp của hàm CAST để xem những gì các tham số truyền vào trong cho thập phân đại diện. Khi tôi thay đổi nó, đôi khi nó thay đổi số lượng vị trí ở bên phải của số thập phân nhưng kết quả không phải luôn luôn là những gì tôi mong đợi vì vậy tôi muốn nhận được một chút trợ giúp về điều này.

Trả lời

18

Viết nó như thế này:

SELECT CAST(CAST(Total As float)/TotalAnswers * 100 As decimal(8, 2)) 
+0

Awesome, thank you very much. – Darren

2

DECIMAL(2) là một số thập phân của 2 chữ số trước và không có chữ số nào sau dấu thập phân. Điều đó không cho phép bạn có các chữ số sau dấu thập phân!

Các đặc điểm kỹ thuật DECIMAL(p,s) xác định số lượng tổng số (p) và số chữ số sau dấu thập phân (s) (nơi s không thể lớn hơn p và là 0 nếu ommitted).

Bạn cần phải sử dụng một cái gì đó giống như DECIMAL(4,2) (tổng 4 chữ số - 2 trong số đó sau dấu thập phân; vì thế: cũng 2 trước dấu thập phân) hoặc một cái gì đó như thế - một số chữ số trước và một số sau dấu thập phân - sau đó bạn sẽ thấy kết quả mong muốn của mình!

Để biết chi tiết về các loại DECIMAL và cú pháp của nó, tham khảo ý kiến ​​các chủ đề MSDN Sách trực tuyến trên decimal and numeric

2

Có thực tế một vài thông số ..

(p, s) 

nơi

  • p đại diện cho "độ chính xác" - tổng số chữ số trước và sau dấu thập phân.
  • s đại diện cho "tỷ lệ" - số chữ số sau dấu thập phân.

Bằng cách chỉ đưa ra 1 tham số, bạn chỉ đưa ra độ chính xác.

Xem MDSN.

1

từ sách trực tuyến cho loại dữ liệu thập phân: Các loại dữ liệu số có độ chính xác và tỷ lệ cố định.

số thập phân [(p [, s])] và số [(p [, s])] Số chính xác và tỷ lệ cố định. Khi sử dụng độ chính xác tối đa, giá trị hợp lệ là từ - 10^38 +1 đến 10^38 - 1. Từ đồng nghĩa SQL-92 cho thập phân là tháng mười hai và tháng mười hai (p, s). số là hàm số thập phân.

p (chính xác) Tổng số chữ số thập phân tối đa có thể được lưu trữ, cả ở bên trái và bên phải của dấu thập phân. Độ chính xác phải là giá trị từ 1 đến độ chính xác tối đa là 38. Độ chính xác mặc định là 18.

s (tỷ lệ) Số chữ số thập phân tối đa có thể được lưu ở bên phải dấu thập phân. Tỷ lệ phải là một giá trị từ 0 đến p. Quy mô có thể được chỉ định nếu độ chính xác được chỉ định. Tỷ lệ mặc định là 0; do đó, 0 < = s < = p. Kích thước lưu trữ tối đa khác nhau, dựa trên độ chính xác.