sql >> Databáze >  >> RDS >> Mysql

Převeďte uložený řetězec md5 na desítkovou hodnotu v MySQL

conv() je omezena na 64bitová celá čísla. Můžete převést horní a dolní část na desítkové a poté je sečíst:

> 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

Kde 18446744073709551616 =2^64. Takže ve vašem případě:

> 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. Oprava chyby R2 2008, která porušuje RCSI

  2. SQL*Plus jak přijmout textovou proměnnou z výzvy?

  3. Jak funguje current_time v PostgreSQL

  4. Získávání dat z více tabulek do jednoho řádku při zřetězení některých hodnot