Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Konvertieren Sie eine gespeicherte md5-Zeichenfolge in einen Dezimalwert in MySQL

conv() ist auf 64-Bit-Ganzzahlen beschränkt. Sie können den hohen und den niedrigen Teil in Dezimalzahlen umwandeln und dann zusammenzählen:

> 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

Wobei 18446744073709551616 =2^64. Also in deinem Fall:

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