通过


round 函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

使用 expr 舍入模式返回舍入运算后的 HALF_UP

语法

round(expr [, targetScale] )

参数

  • expr:数值表达式。

  • targetScale INTEGER常量表达式。 如果省略 targetScale,则默认值为 0(整数)。

    在 Databricks SQL 和 Databricks Runtime 12.2 LTS 及更高版本中:如果 targetscale 是负数,则舍入会执行到 10 的正幂。

返回

如果 exprDECIMAL,则结果为 DECIMAL,其精度为 exprtargetScale 中较小的那个。 对于所有其他数字类型,结果类型与 expr 匹配。

在进行 HALF_UP 舍入计算时,数字 5 向上舍入。

对于 HALF_EVEN 舍入,请使用 bround 函数

对于整型数值类型,当舍入值溢出结果类型时,Azure Databricks引发 ARITHMETIC_OVERFLOW 错误。

警告

在 Databricks Runtime 12.2 LTS 及以下版本中,如果 spark.sql.ansi.enabledfalse,则溢出不会导致错误,而是会将结果“换行”。

常见错误条件

示例

> SELECT bround(2.5, 0), round(2.5, 0);
 2    3

> SELECT bround(3.5, 0), round(3.5, 0);
 4    4

> SELECT bround(2.6, 0), round(2.6, 0);
 3    3

> SELECT bround(2.25, 1), round(2.25, 1);
 2.2  2.3

> SELECT bround(13.5, -1), round(13.5, -1);
 10   10

-- Rounding 127 to the nearest 10 produces 130, which overflows TINYINT.
> SELECT round(cast(127 AS TINYINT), -1);
  Error: ARITHMETIC_OVERFLOW