SQL での 10 進数演算

SQL における 10 進数演算の結果の精度および位取りは、以下の各式によって定義されます。記号 ps は第 1 オペランドの精度と位取りを表し、 記号 p' と s' は第 2 オペランドの精度と位取りを表します。

記号 mp は最大精度を表します。 mp の値は、次のような場合に 63 になります。

  • p または p' が 31 より大きい
  • 最大精度に値 63 が明示的に指定されている

それ以外の場合、mp の値は 31 です。

記号 ms は最大スケールを表します。 ms のデフォルト値は 31 です。 ms は、0 から最大精度の間の任意の数値に明示的に設定できます。

記号 mds は最小除算スケールを表します。 mds のデフォルト値は 0 です。この 0 は、最小スケールが指定されないことを示します。 mds は、1 から min (ms, 9) の間の任意の数値に明示的に設定できます。

最大精度、最大スケール、および最小除算スケールは、CRTSQLxxx コマンド、RUNSQLSTM コマンド、または SET OPTION ステートメントの DECRESULT パラメーターに明示指定することができます。 これらは、ODBC データ・ソース、JDBC プロパティー、OLE DB プロパティー、および .NET プロパティーにも指定できます。

加算および減算

加算および減算の結果の位取りは max(s,s') です。 精度は、min(mp,max(p-s,p'-s') +max(s,s')+1) です。

乗算

乗算の結果の精度は min (mp,p+p') であり、 位取りは min(ms,s+s') です。

除算

除算の結果の精度は (p-s+s') + max(mds, min(ms, mp - (p-s+s') ) ) です。 スケールは max(mds, min(ms, mp - (p-s+s') ) ) です。 位取りは、正の数でなければなりません。