Các quy tắc cho decimal
thành decimal
chuyển đổi cho phép nhân và phép chia được mô tả trong BOL
.
nhưng không xác định chính xác cách thức thực hiện cắt ngắn như vậy. Điều này được ghi lại ở đây . Tuy nhiên, đôi khi nó dễ dàng hơn chỉ để sử dụng thử và sai!
Các phôi trung gian sau đây cung cấp cho bạn kết quả mong muốn. Bạn có thể sống với những thứ đó không?
DECLARE @var NUMERIC(19,8)
DECLARE @a NUMERIC(19,8)
DECLARE @b NUMERIC(19,8)
SET @var = -413.72063274
SET @a = 651.00000000
SET @b = 1000.00000000
DECLARE @v SQL_VARIANT
SET @v = CAST(@a/@b AS NUMERIC(24,10))* CAST(@var AS NUMERIC(23,8))
SELECT CAST(SQL_VARIANT_PROPERTY(@v, 'BaseType') AS VARCHAR(30)) AS BaseType,
CAST(SQL_VARIANT_PROPERTY(@v, 'Precision') AS INT) AS PRECISION,
CAST(SQL_VARIANT_PROPERTY(@v, 'Scale') AS INT) AS Scale