Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Função CONV() em floco de neve


Eu escrevi uma UDF para fazer o que CONV() faz. Funciona, mas infelizmente as variáveis ​​Javascript não suportam precisão numérica tão grande quanto sua amostra.

Isso funcionará para entradas menores, mas para sua grande entrada Base36 acontece o seguinte:

15468921890196183763 --deve ser esse resultado

15468921890196185000 --Variáveis ​​nativas JavaScript não têm esse nível de precisão

Caso você ache útil que valores menores sejam convertidos de uma base para outra, aqui 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)));
$$;