Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

mất tỷ lệ khi thực hiện tính toán

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hoạt động CRUD với ASP.NET Core MVC, Entity Framework Core và SQL Server

  2. Danh sách các bảng được sử dụng trong tất cả các thủ tục được lưu trữ với tên lược đồ của SP

  3. SQL Server chọn giá trị ngẫu nhiên (hoặc đầu tiên) với tổng hợp

  4. Làm thế nào để đếm trong SQL tất cả các trường có giá trị null trong một bản ghi?

  5. Làm cách nào để viết tên cột có dấu chấm (.) Trong mệnh đề SELECT?