sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo se define la escala cuando se dividen decimal y bigint?

Argumento 1:3 AS DECIMAL(19, 8)

Argumento 2:27 AS DECIMAL (18, 0) -- la precisión predeterminada es 18, la escala predeterminada es 0 (BIGINT se convirtió a DECIMAL debido a la precedencia del tipo)

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

Calculemos para el ejemplo 1:

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

Para todos sus ejemplos obtendrá siempre una escala máxima de 27.

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

La parte entera toma solo los dígitos necesarios (1), (2), (1).

Para mí todo es perfectamente válido.

Esta respuesta se basa en el trabajo de @Paul White from Decimal Truncation In division .