Mysql
 sql >> Database >  >> RDS >> Mysql

CONV() nel fiocco di neve

Ho scritto un UDF per fare ciò che fa CONV(). Funziona, ma sfortunatamente le variabili Javascript non supportano la precisione numerica grande quanto il tuo campione.

Questo funzionerà per input più piccoli, ma per il tuo input Base36 di grandi dimensioni accade quanto segue:

15468921890196183763 --dovrebbe essere questo risultato

15468921890196185000 --Le variabili native di JavaScript non hanno quel livello di precisione

Nel caso in cui ritieni utile convertire valori più piccoli da una base all'altra, eccolo qui:

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