Dưới đây là ba tùy chọn để chuyển đổi một số nguyên thành giá trị thập phân trong SQL Server bằng T-SQL.
CAST()
Chức năng
CAST()
hàm chuyển đổi một biểu thức của một kiểu dữ liệu này sang một kiểu dữ liệu khác:
SELECT CAST(275 AS DECIMAL(5, 2));
Kết quả:
275.00
Trong ví dụ này, chúng tôi đã chuyển đổi một số nguyên (275
) thành giá trị thập phân có độ chính xác là 5
và với 2
vị trí thập phân.
Số thập phân và số là từ đồng nghĩa và có thể được sử dụng thay thế cho nhau. Do đó, chúng ta có thể điều chỉnh ví dụ của mình như sau để đạt được kết quả tương tự:
SELECT CAST(275 AS NUMERIC(5, 2));
Kết quả:
275.00
Điều quan trọng cần nhớ là điều chỉnh độ chính xác theo yêu cầu:
SELECT CAST(18301275 AS DECIMAL(10, 2));
Kết quả:
18301275.00
Nếu đối số chính xác không đủ lớn, sẽ xảy ra lỗi:
SELECT CAST(18301275 AS DECIMAL(9, 2));
Kết quả:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
CONVERT()
Chức năng
CONVERT()
hàm thực hiện tương tự như CAST()
, ngoại trừ cú pháp hơi khác:
SELECT CONVERT(DECIMAL(5, 2), 275);
Kết quả:
275.00
Sử dụng một toán tử số học
Một tùy chọn khác là sử dụng một toán tử số học, chẳng hạn như một toán tử nhân:
SELECT 275 * 1.00;
Kết quả:
275.00
Trong ví dụ này, chúng tôi nhân số nguyên với 1.00
.
Trong SQL Server, bất cứ khi nào toán tử kết hợp các biểu thức của các kiểu dữ liệu khác nhau, kiểu dữ liệu có mức độ ưu tiên thấp hơn sẽ được chuyển đổi đầu tiên thành kiểu dữ liệu có mức độ ưu tiên cao hơn. Sau đó, thao tác trả về kiểu dữ liệu của đối số có mức độ ưu tiên cao hơn.
Trong SQL Server, số thập phân có mức độ ưu tiên cao hơn so với số nguyên.
Bằng cách nhân nó với 1,00, chúng tôi sẽ không thay đổi phần số nguyên. Chúng tôi chỉ đơn giản là chuyển đổi nó thành số thập phân và thêm phần phân số.
Xem Thứ tự ưu tiên loại dữ liệu trong SQL Server để biết danh sách các loại dữ liệu theo thứ tự ưu tiên.