小数を計算するときの目盛り Precisionof decimal arithmetic expressions Scaleof decimal arithmetic expressions

SQL文には、異なる精度(小数点をはさんだ両方にある桁の数です)や目盛り(小数部の桁の数です)の小数型を使った計算式を書くことができます。 計算結果にて小数型の精度や目盛りがどうなるかはオペランドに依存します。

小数のオペランドが二つ与えられたとして、:

  • lpは左辺のオペランドの精度とします。
  • rpは右辺のオペランドの精度とします。
  • lsは左辺のオペランドの目盛りとします。
  • rsは右辺のオペランドの目盛りとします。

結果のデータ型の目盛りは、それぞれの計算方法について、次式のとおりです。

  • 掛け算

    ls + rs

  • 割り算

    31 - lp + ls - rs

  • AVG()

    max(max(ls, rs), 4)

  • その他全部

    max(ls, rs)

例えば、次式の結果ではデータ型の目盛りは27です。 11.0/1111.33 // 31 - 3 + 1 - 2 = 27

結果のデータ型の精度は、それぞれの計算方法について、次式のとおりです。

  • 掛け算

    lp + rp

  • 足し算

    2 * (p - s) + s

  • 割り算

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

  • その他全部

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