Escala na aritmética decimal

As instruções SQL podem envolver expressões aritméticas que utilizam tipos de dado decimais com precisão (o número total de dígitos, tanto à esquerda quanto à direita do ponto decimal) e escala (o número de dígitos da parte fracionária) diferentes. A precisão e a escala do tipo decimal resultante dependem da precisão e da escala dos operandos.

Dada uma expressão aritmética envolvendo dois operandos decimais:
  • lp significa a precisão do operando à esquerda
  • rp significa a precisão do operando à direita
  • ls significa a escala do operando à esquerda
  • rs significa a escala do operando à direita
São utilizadas as seguintes fórmula para determinar a escala do tipo de dado resultante para os seguintes tipos de expressões aritméticas:
  • multiplicação

    ls + rs

  • divisão

    31 - lp + ls - rs

  • AVG()

    max(max(ls, rs), 4)

  • todas as outras

    max(ls, rs)

Por exemplo, a escala do tipo de dado resultante da expressão a seguir é 27:
11.0/1111.33
// 31 - 3 + 1 - 2 = 27 
São utilizadas as seguintes fórmula para determinar a precisão do tipo de dado resultante para os seguintes tipos de expressões aritméticas:
  • multiplicação

    lp + rp

  • adição

    2 * (p - s) + s

  • divisão

    lp - ls + rp + max(ls + rp - rs + 1, 4)

  • todas as outras

    max(lp - ls, rp - rs) + 1 + max(ls, rs)

Conceitos relacionados
Visão geral dos tipos numéricos
Referências relacionadas
Promoção de tipo numérico nas expressões
Armazenamento de valores de um tipo de dado numérico em colunas de outro tipo de dado numérico