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

Converta uma string md5 armazenada em um valor decimal no MySQL


conv() é limitado a inteiros de 64 bits. Você pode converter a parte alta e baixa em decimal e depois adicioná-las:
> select cast(conv(substr("000002dcc38af6f209e91518db3e79d3", 1, 16), 16, 10) as
              decimal(65))*18446744073709551616 +
         cast(conv(substr("000002dcc38af6f209e91518db3e79d3", 17, 16), 16, 10) as
              decimal(65));
58055532535286745202684464101843

Onde 18446744073709551616 =2^64. Então no seu caso:
> select cast(conv(substr(md5_key, 1, 16), 16, 10) as 
              decimal(65))*18446744073709551616 +
         cast(conv(substr(md5_key, 17, 16), 16, 10) as
              decimal(65))
         from bigtable limit 1;