sql >> Databasteknik >  >> RDS >> Mysql

Konvertera en lagrad md5-sträng till ett decimalvärde i MySQL

conv() är begränsad till 64 bitars heltal. Du kan konvertera den höga och låga delen till decimaler och sedan lägga till dem:

> 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

Där 18446744073709551616 =2^64. Så i ditt 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;


  1. Hur undviker man skräp/skräptecken när man läser data från flera språk?

  2. Använd tnsnames.ora i Oracle SQL Developer

  3. Hur fyller man i den andra rullgardinsmenyn baserat på valet av den första rullgardinsmenyn med jQuery/AJAX och PHP/MySQL?

  4. Hur man skapar en ssh-tunnel i ruby ​​och sedan ansluter till mysql-servern på fjärrvärden