conv
函数
适用于: Databricks SQL Databricks Runtime
将 num
从 fromBase
转换为 toBase
。
语法
conv(num, fromBase, toBase)
参数
num
:STRING
表达式,表示fromBase
中的数字。fromBase
:INTEGER
表达式,表示源基数。toBase
:INTEGER
表达式,表示目标基数。
返回
一个 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.3 LTS 及更高版本会引发 ARITHMETIC_OVERFLOW。
警告
在 Databricks Runtime 中,如果 spark.sql.ansi.enabled 为 false
,则溢出不会导致错误,而是会将结果“换行”。
示例
> 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