DIV0 和 DIV0NULL:超出输出标度的结果的变更

注意

此行为变更在 2023_08 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

对于 DIV0DIV0NULL 函数,当除法运算的结果超过输出刻度时:

变更前:

DIV0 和 DIV0NULL 会截断输出。

这与使用除法运算符 (/) 的结果不一致。

变更后:

DIV0 和 DIV0NULL 会将 输出从 0 开始四舍五入一半 (link removed)。

这与使用除法运算符 (/) 的结果一致。

例如,假设要将 5 除以 9:

SELECT DIV0(5, 9), DIV0NULL(5, 9), 5/9;
Copy
变更前:

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

语言: 中文