sql >> Database >  >> RDS >> Mysql

Converteer een opgeslagen md5-tekenreeks naar een decimale waarde in MySQL

conv() is beperkt tot 64-bits gehele getallen. Je kunt het hoge en lage deel naar decimaal converteren en ze dan bij elkaar optellen:

> 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

Waar 18446744073709551616 =2^64. Dus in jouw geval:

> 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. Hoe array of meerdere waarden in één kolom op te slaan

  2. mysql in lijst valideert alleen de eerste id in de lijst. misschien een blob-probleem

  3. Verkrijg de naam van de DB-eigenaar in PostgreSql

  4. SQLite - JOIN-instructies