Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

kehilangan skala saat melakukan perhitungan

Aturan untuk decimal ke decimal konversi untuk perkalian dan pembagian dijelaskan dalam BOL .

tetapi membiarkannya tidak ditentukan dengan tepat bagaimana pemotongan tersebut dilakukan. Ini didokumentasikan di sini . Namun terkadang lebih mudah hanya menggunakan trial and error!

Gips perantara berikut memberi Anda hasil yang diinginkan. Bisakah kamu hidup dengan itu?

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. Bagaimana dua pernyataan pembaruan di bawah ini berbeda dalam SQL?

  2. Cara Menangani Kesalahan dalam Transaksi Bersarang SQL Server

  3. Bisakah saya menggunakan aliran untuk INSERT atau UPDATE baris di SQL Server (C#)?

  4. SQL Server datetime SEPERTI pilih?

  5. T-SQL:Bagaimana cara membuat kunci unik yang peka huruf besar-kecil?