1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
xử lý trường hợp đầu tiên - nhờ sự hỗ trợ của câu trả lời cho một câu hỏi tương tự trên Diễn đàn máy chủ SQL
, mà tôi đã điều chỉnh và nhanh chóng kiểm tra.
Lưu ý rằng nếu các số bạn làm tròn đến 0.5
gần nhất có thể lớn hơn (ví dụ:333.69
=> 333.5
), hãy nhớ chỉ định thêm decimal
độ chính xác khi bạn truyền (ví dụ:select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
), hoặc bạn có thể gặp lỗi tràn:
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
Độ chính xác cao hơn sẽ không ảnh hưởng đến kết quả cuối cùng (tức là select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
và select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
cả hai đều mang lại 3.5
); nhưng thật lãng phí nếu các số bạn làm tròn luôn nhỏ hơn.
Tham khảo trực tuyến với các ví dụ có sẵn cho T-SQL FLOOR
, CAST
và decimal
để giúp đỡ.
2) select ROUND(142600, -3)
xử lý trường hợp thứ hai.
Tham khảo trực tuyến tương tự có sẵn cho T-SQL ROUND
.