DIV0 和 DIV0NULL:超出输出标度的结果的变更¶
对于 DIV0 和 DIV0NULL 函数,当除法运算的结果超过输出刻度时:
- 变更前:
DIV0 和 DIV0NULL 会截断输出。
这与使用除法运算符 (
/
) 的结果不一致。- 变更后:
DIV0 和 DIV0NULL 会将 输出从 0 开始四舍五入一半 (link removed)。
这与使用除法运算符 (
/
) 的结果一致。
例如,假设要将 5 除以 9:
SELECT DIV0(5, 9), DIV0NULL(5, 9), 5/9;
- 变更前:
DIV0 和 DIV0NULL 会将结果截断为 0.555555,而除法运算符会将结果四舍五入为 0.555556。
+------------+----------------+----------+ | DIV0(5, 9) | DIV0NULL(5, 9) | 5/9 | |------------+----------------+----------| | 0.555555 | 0.555555 | 0.555556 | +------------+----------------+----------+
- 变更后:
DIV0、DIV0NULL 和除法运算符会将结果四舍五入为 0.555556。
+------------+----------------+----------+ | DIV0(5, 9) | DIV0NULL(5, 9) | 5/9 | |------------+----------------+----------| | 0.555556 | 0.555556 | 0.555556 | +------------+----------------+----------+
此外,向 DIV0 和 DIV0NULL 函数传递两个以上的实参会导致异常。
- 变更前:
虽然 DIV0 和 DIV0NULL 函数只支持两个实参,但您可以传入其他实参。
该函数会忽略其他实参。
- 变更后:
如果向 DIV0 和 DIV0NULL 函数传递两个以上的实参,就会出现以下异常:
000939 (22023): SQL compilation error: ... too many arguments for function [DIV0] expected 2, got 3
参考:1400