sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan defineres skala, når decimal og bigint deles?

Argument 1:3 AS DECIMAL(19, 8)

Argument 2:27 AS DECIMAL (18, 0) -- standardpræcision er 18, standardskala er 0 (BIGINT blev konverteret til DECIMAL på grund af typeprioritet)

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

Lad os for eksempel beregne 1:

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

For alle dine eksempler får du altid max 27 skala.

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

Hele delen tager kun nødvendige cifre (1), (2), (1).

For mig er alt fuldstændig gyldigt.

Dette svar er baseret på arbejde fra @Paul White fra Decimal Truncation In division .



  1. ORA-27101:delt hukommelsesrige eksisterer ikke

  2. Hvordan EDB blev førende på Postgres-markedet

  3. Udfør kun udskudt trigger én gang pr. række i PostgreSQL

  4. Hvordan afrundes millisekunders værdi fra timestamp(0) i PostgreSQL?