sql >> Base de Datos >  >> RDS >> Mysql

Función CONV() en copo de nieve

Escribí un UDF para hacer lo que hace CONV(). Funciona, pero desafortunadamente las variables de Javascript no admiten precisión numérica para un tamaño tan grande como su muestra.

Esto funcionará para entradas más pequeñas, pero para su gran entrada Base36 sucede lo siguiente:

15468921890196183763 --debería ser este resultado

15468921890196185000 --Las variables nativas de Javascript no tienen ese nivel de precisión

En caso de que le resulte útil para convertir valores más pequeños de una base a otra, aquí está:

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