SQL 中的十进制算术
以下公式定义 SQL 中十进制运算结果的精度和小数位数。 符号 p 和 s 表示第一个操作数的精度和小数位,符号 p' 和 s表示第二个操作数的精度和小数位。
符号 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')) )。 标度不得为负数。