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

Converti una stringa md5 memorizzata in un valore decimale in MySQL

conv() è limitato a numeri interi a 64 bit. Puoi convertire la parte alta e bassa in decimale e poi sommarle insieme:

> 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

Dove 18446744073709551616 =2^64. Quindi nel tuo 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;