雪花中的CONV()函数

2020-02-22 mysql sql snowflake-data-warehouse

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

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

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

结果应为15468921890196183763

Answers

我没有在雪花中找到任何函数来隐秘地将数字从一个转换为另一个,但是您可以尝试以下文章中编写的方法:

雪花博客

希望这可以帮助!

非常感谢, 斯里加

我写了一个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)));
$$;

Related