雪花中的 CONV() 函数

CONV() function in snowflake

我试图在 Snowflake 中找到与 CONV() MySQL 函数等效的函数,但我似乎找不到。

我正尝试在 Snowflake 中执行以下操作:

SELECT CONV('39ix75wf3aor7',36,10)

结果应该是15468921890196183763

我写了一个 UDF 来做 CONV() 做的事情。它有效,但不幸的是 Javascript 变量不支持与您的样本一样大的数字精度。

这适用于较小的输入,但对于较大的 Base36 输入,会发生以下情况:

15468921890196183763 --应该是这个结果

15468921890196185000 --Javascript 原生变量没有那种精度

如果您发现较小的值从一个碱基转换到另一个碱基很有用,这里是:

create or replace function CONV(VALUE_IN string, OLD_BASE float, NEW_BASE float)
returns string
language javascript
as
$$
    // Usage note: Loses precision for very large inputs
    return parseInt(VALUE_IN, Math.floor(OLD_BASE).toString(Math.floor(NEW_BASE)));
$$;