sql >> Databasteknik >  >> RDS >> Sqlserver

Hur definieras skala när decimal och bigint delas?

Argument 1:3 AS DECIMAL(19, 8)

Argument 2:27 AS DECIMAL (18, 0) -- standardprecisionen är 18, standardskalan är 0 (BIGINT konverterades till DECIMAL på grund av typprioritet)

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

Låt oss till exempel beräkna 1:

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

För alla dina exempel får du alltid max 27 skala.

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

Hela delen tar bara nödvändiga siffror (1), (2), (1).

För mig är allt fullt giltigt.

Det här svaret är baserat på arbete av @Paul White från Decimal Truncation In division .



  1. Hashing eller kryptering av variabler som ska skickas i en url

  2. Uppföljare Hitta tillhör Många Association

  3. Textsökning i flera fält MySQL

  4. Skillnad mellan olika strängtyper i SQL Server?