Mysql
 sql >> Base de données >  >> RDS >> Mysql

Fonction CONV() en flocon de neige

J'ai écrit un UDF pour faire ce que fait CONV(). Cela fonctionne, mais malheureusement les variables Javascript ne prennent pas en charge la précision numérique aussi grande que votre échantillon.

Cela fonctionnera pour les petites entrées, mais pour votre grande entrée Base36, voici ce qui se passe :

15468921890196183763 --devrait être ce résultat

15468921890196185000 --Les variables natives JavaScript n'ont pas ce niveau de précision

Au cas où vous trouveriez utile de convertir des valeurs plus petites d'une base à l'autre, c'est ici :

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