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

Convierta una cadena md5 almacenada a un valor decimal en MySQL

conv() está limitado a enteros de 64 bits. Puede convertir la parte alta y baja a decimal y luego sumarlos:

> 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

Donde 18446744073709551616 =2^64. Así que en tu 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;