SQL 中的十进制算术

以下公式定义 SQL 中十进制运算结果的精度和小数位数。 符号 ps 表示第一个操作数的精度和小数位,符号 p' 和 s表示第二个操作数的精度和小数位。

符号 mp 表示最大精度。 在下列情况下, mp 的值为 63:

  • pp' 大于 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 (mpp+p ') ,小数位为 min (mss+s ')。

部门

除法结果的精度为 (p-s+s ') + max (mds, min (msmp -(p-s+ s')) )。 小数位为 max (mds, min (msmp -(p-s+ s')) )。 标度不得为负数。