雪花中的 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)));
$$;
我试图在 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)));
$$;