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
.