2011-01-29 61 views
32

Trong SQL, tôi có col1col2. Cả hai đều là số nguyên.Giá trị thập phân trong SQL để chia kết quả

tôi muốn làm như:

select col1/col2 from tbl1 

tôi nhận được kết quả 1 nơi col1=3col2=2

Kết quả tôi muốn là 1.1

tôi đặt round(col1/col2,2). Kết quả vẫn là 1.

Tôi đặt decimal(col1/col2,2). Số thập phân không được xây dựng trong hàm.

Tôi làm cách nào để thực hiện chính xác 1,1?

+1

là 3 chia cho 2 bằng 1,5? – bensiu

+0

Có. nó là .. .. – william

+12

Loại làm tròn nào cho bạn 3/2 = 1,1? – Blorgbeard

Trả lời

24

Bạn sẽ cần truyền hoặc chuyển đổi các giá trị thành thập phân trước khi chia. Hãy xem này http://msdn.microsoft.com/en-us/library/aa226054.aspx

Ví dụ

DECLARE @num1 int = 3 DECLARE @num2 int = 2 

SELECT @num1/@num2 

SELECT @num1/CONVERT(decimal(4,2), @num2) 

SELECT đầu tiên sẽ dẫn đến những gì bạn đang thấy trong khi SELECT thứ hai sẽ có câu trả lời đúng 1.500000

3

Có thể có những cách khác để có được kết quả mong muốn của bạn.

Declare @a int 
Declare @b int 
SET @a = 3 
SET @b=2 
SELECT cast((cast(@a as float)/ cast(@b as float)) as float) 
10

SELECT CAST (col1 as float)/col2 FROM tbl1

Một dàn diễn viên nên làm việc. ("Less is more").

Từ Books Online:

Trả về kiểu dữ liệu của đối số với độ ưu tiên cao. Để biết thêm thông tin về ưu tiên loại dữ liệu, hãy xem Data Type Precedence (Transact-SQL).

Nếu một số nguyên cổ tức được chia bởi một số nguyên ước, kết quả là một số nguyên có bất kỳ phần phân đoạn của các kết quả cắt ngắn

75

Chỉ cần một cách tiếp cận:

SELECT col1 * 1.0/col2 FROM tbl1 

Nhân với 1.0, biến một số nguyên thành một số floatnumeric(13,1) và do đó hoạt động như một kiểu định dạng, nhưng hầu hết nó có thể chậm hơn.

Ưu điểm: ít phức tạp hơn.

+1

+1 cách tiếp cận tốt đẹp;) – Somebody

+2

+100500;) Cũng có thể sử dụng mà không có số không SELECT col1 * 1./ col2 FROM tbl1 –

+1

+1 Cách tiếp cận dễ dàng hơn nhiều – Vandel212

1
CAST(ROUND(columnA *1.00/columnB, 2) AS FLOAT) 
+0

tanx alot
nhận phần trăm từ giải pháp này phải cho kết quả * 100 :) –

Các vấn đề liên quan