Mysql
 sql >> Datenbank >  >> RDS >> Mysql

CONV()-Funktion in Snowflake

Ich habe eine UDF geschrieben, um das zu tun, was CONV() tut. Es funktioniert, aber leider unterstützen Javascript-Variablen keine numerische Genauigkeit für so viel wie Ihr Beispiel.

Dies funktioniert für kleinere Eingaben, aber für Ihre große Base36-Eingabe passiert Folgendes:

15468921890196183763 – sollte dieses Ergebnis sein

15468921890196185000 --Native JavaScript-Variablen haben diese Genauigkeit nicht

Falls Sie es für kleinere Werte nützlich finden, von einer Basis zur anderen zu wechseln, hier ist es:

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)));
$$;