conv 函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

numfromBase 转换为 toBase

语法

conv(num, fromBase, toBase)

参数

  • numSTRING 表达式,表示 fromBase 中的数字。
  • fromBaseINTEGER 表达式,表示源基数。
  • toBaseINTEGER 表达式,表示目标基数。

返回

一个 STRING

该函数支持基数 2 到基数 36。 数字“A”(或“a”)表示十进制 10,“Z”(或“z”)表示十进制 35。 支持的值范围跨越 BIGINT 的范围。

如果 fromBase 小于 2,或 toBase 为 -1、0 或 1,则结果为 NULL

如果 toBase 为负数,则 num 会被解释为有符号数字,否则将其视为无符号数字。

如果 num 超出范围,Databricks SQL 和 Databricks Runtime 13.0 及更高版本会引发 ARITHMETIC_OVERFLOW

警告

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

示例

> SELECT conv('100', 2, 10);
 4

> SELECT conv('-10', 16, 10);
 18446744073709551600

> SELECT conv('-10', 16, -10);
 -16

> SELECT conv('-1', 10, 10);
 18446744073709551615

> SELECT conv('FFFFFFFFFFFFFFFFF', 16, 10);
 Error: ARITHMETIC_OVERFLOW

> SELECT conv('FFFFFFFFFFFFFFFF', 16, 10);
 18446744073709551615

> SELECT conv('FFFFFFFFFFFFFFFF', 16, -10);
 -1