Napisałem UDF, aby robić to, co robi CONV(). To działa, ale niestety zmienne JavaScript nie obsługują precyzji numerycznej dla tak dużej próbki.
To zadziała w przypadku mniejszych danych wejściowych, ale w przypadku dużych danych wejściowych Base36 dzieje się co następuje:
15468921890196183763 --powinien być tym wynikiem
15468921890196185000 --Natywne zmienne JavaScript nie mają takiego poziomu dokładności
Jeśli okaże się, że mniejsze wartości są przydatne do ukrywania się z jednej podstawy do drugiej, oto:
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)));
$$;