Câu trả lời:
thử cái này
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Sử dụng Str()
chức năng. Phải mất ba đối số (số, tổng số ký tự để hiển thị và số vị trí thập phân để hiển thị
Select Str(12345.6789, 12, 3)
hiển thị: '12345.679' (3 dấu cách, 5 chữ số 12345, dấu thập phân và ba chữ số thập phân (679) - làm tròn nếu nó phải cắt bớt, (trừ khi phần nguyên quá lớn so với tổng kích thước, trong trường hợp này dấu hoa thị được hiển thị thay thế.)
cho Tổng số 12 ký tự, với 3 ở bên phải dấu thập phân.
it rounds if it has to truncate
... Trừ khi phần nguyên quá lớn so với tổng kích thước, trong trường hợp đó, dấu hoa thị được hiển thị thay thế. Điều này được đề cập trong các tài liệu choSTR
. Đây là một trích dẫn từ trang đó:STR(1223,2) truncates the result set to **.
Nói chung, bạn có thể định nghĩa độ chính xác của một số trong SQL bằng cách định nghĩa nó với các tham số. Trong hầu hết các trường hợp, điều này sẽ NUMERIC(10,2)
hoặc Decimal(10,2)
- sẽ xác định một cột là một Số có 10 chữ số có độ chính xác là 2 (số thập phân).
Chỉnh sửa cho rõ ràng
Công việc này đối với tôi và luôn giữ hai phân số
23.1 ==> 23.10
25,569 ==> 25,56
1 ==> 1,00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
Đây là cách những đứa trẻ đang làm điều đó ngày hôm nay:
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
123,46
DECLARE @test DECIMAL(18,6) = 0.456789
thì SELECT FORMAT(@test, '##.##')
trả về: .46
Làm thế nào để bạn có được nó để hiển thị số 0 đứng đầu : 0.46
?
Thử cái này:
declare @MyFloatVal float;
set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))
select @MyFloatVal
Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
Nhân giá trị bạn muốn chèn (ví dụ: 2,99) với 100
Sau đó chèn phép chia cho 100 kết quả, thêm 0,01 vào cuối:
299.01/100
Điều này sẽ cho phép tổng cộng 10 chữ số với 2 giá trị sau số thập phân. Điều đó có nghĩa là nó có thể chứa giá trị giá trị trước số thập phân tối đa 8 chữ số và 2 sau số thập phân.
Để xác thực, đặt giá trị trong truy vấn sau.
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;