Viết một số có hai chữ số máy chủ SQL


Câu trả lời:


213

thử cái này

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)

2
Nếu đây là câu trả lời 10 năm trước thì nó không còn nữa. Phương pháp này sẽ biến 10.11111 thành 10:00.
Jonathon Cowley-Thom

Tôi cố gắng chọn Convert (DECIMAL (10,2), 10,11111) nó trở 10.11 kết quả tương tự cho chọn Convert (DECIMAL (10,2), '10,11111') nó được trong Sql Server 2008 R2
SKCS Kamal

70

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.


1
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 **.
Mark Byers

36

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


4
Nó cũng có thể được khai báo là DECIMAL (10, 2).
jrcs3

10
Điều này là sai vì nhiều lý do. Nó không phải là số, nó là số hoặc số thập phân. Bạn nói số (10,2) cho phép 10 vị trí trước dấu thập phân, điều này cũng sai. số (10,2) cho phép tổng 10 chữ số với 2 vị trí sau dấu thập phân. Phạm vi = -99999999,99 đến 99999999,99
George Mastros

@G Mastros: Có vẻ như bạn đúng về điểm chính xác. Về cách đặt tên thực tế của quy ước, trong nhiều triển khai SQL, SỐ là một kiểu hợp lệ. Mặc dù tôi sẽ thừa nhận không biết trường hợp của sqlserver
AAA

@GMastros đã đến để nói điều tương tự. msdn.microsoft.com/en-us/l Library / aa258832% 28v = sql.80% 29.aspx
Joe

19

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

Ảnh chụp màn hình mã


2
hãy thử hàm STR () từ Charles Bretana ở trên. Nó hoạt động như công thức của bạn nhưng sẽ làm tròn trên ví dụ 25.569 của bạn.
JerryOL

15

Đâ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


1
Chức năng FORMAT có sẵn từ phiên bản 2012 trở đi.
1263981

hoặc: CHỌN FORMAT (@test, '. ##')
java-love

Nếu dữ liệu đầu vào là: 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?
luonomev

Để có được số 0 đứng đầu, hãy thử CHỌN FORMAT (@test, '# 0. ##')
ClubbieTim

14

Nếu bạn chỉ cần hai chữ số thập phân, cách đơn giản nhất là ..

SELECT CAST(12 AS DECIMAL(16,2))

HOẶC LÀ

SELECT CAST('12' AS DECIMAL(16,2))

Đầu ra

12.00

7

Nếu bạn ổn với việc làm tròn số thay vì cắt bớt số đó, thì đó chỉ là:

ROUND(column_name,decimals)

2

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

0

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

0

Đ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;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.