Mysql
 sql >> Base de données >  >> RDS >> Mysql

Convertir une chaîne md5 stockée en une valeur décimale dans MySQL

conv() est limité aux entiers 64 bits. Vous pouvez convertir la partie supérieure et inférieure en décimal, puis les additionner :

> 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

Où 18446744073709551616 =2^64. Donc dans votre cas :

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