Argumento 1:
3 AS DECIMAL(19, 8)
Argumento 2:
27 AS DECIMAL (18, 0)
-- a precisão padrão é 18, a escala padrão é 0 (BIGINT
foi convertido para DECIMAL
devido à precedência de tipo) p1 = 19
p2 = 18
s1 = 8
s2 = 0
Vamos calcular por exemplo 1:
precision: (19 - 8 + 0) + MAX(6, 8 + 18 + 1) = 38
scale: MAX(6, 8 + 18 + 1) = 27
Para todos os seus exemplos, você obterá sempre uma escala máxima de 27.
0.111111111111111111111111111 (27)
11.111111111111111111111111111 (27)
0.005488934750153684025643277 (27)
A parte inteira leva apenas os dígitos necessários (1), (2), (1).
Para mim tudo é perfeitamente válido.
Esta resposta é baseada no trabalho de
@Paul White
de Decimal Truncation In division
.