sql >> Database >  >> RDS >> Sqlserver

Hoe schaal wordt gedefinieerd wanneer decimaal en bigint worden verdeeld?

Argument 1:3 AS DECIMAL(19, 8)

Argument 2:27 AS DECIMAL (18, 0) -- standaard precisie is 18, standaard schaal is 0 (BIGINT is geconverteerd naar DECIMAL vanwege typevoorrang)

p1 = 19
p2 = 18
s1 = 8
s2 = 0

Laten we bijvoorbeeld 1 berekenen:

precision: (19 - 8 + 0) + MAX(6, 8 + 18 + 1) = 38
scale:     MAX(6, 8 + 18 + 1) = 27

Voor al je voorbeelden krijg je altijd max. 27 schaal.

 0.111111111111111111111111111 (27)
11.111111111111111111111111111 (27)
 0.005488934750153684025643277 (27)

Het hele deel bevat alleen de noodzakelijke cijfers (1), (2), (1).

Voor mij is alles perfect geldig.

Dit antwoord is gebaseerd op het werk van @Paul White van Decimal Truncation In division .



  1. Boolean converteren naar Varchar2

  2. Tabel dupliceren in SQL-server (inclusief PK &FK)

  3. PL/SQL SQL*Plus-instructie genegeerd

  4. Kan geen verbinding maken met de localhost-database vanaf de node.js-server