sql >> Databasteknik >  >> RDS >> Mysql

Skillnad mellan BINARY(16) och CHAR(32) vid lagring av MD5 i databasen

För närvarande förlorar du hälften av kontrollsumman när du använder BINARY(16) . När du lagrar en MD5-kontrollsumma i BINARY(16) du bör lagra den som binär data, inte kodad i hexadecimal. Det vill säga:

INSERT INTO test (md5_binary) VALUES(UNHEX(md5("one!")));

Du kan använda HEX-funktionen för att koda den till hex igen om du vill jämföra den med en annan kontrollsumma:

SELECT HEX(md5_binary) FROM test;

Fördelen med att använda BINÄR för att lagra kontrollsumman istället för hexadecimal text är att halva lagringsutrymmet behövs.




  1. Använder php för att returnera GROUP_CONCAT('kolumn x') värden

  2. PDO - fråga ger inga resultat

  3. Hur skapar jag en dynamisk URL i php?

  4. Effektiv tilldelning av percentil/rank i MYSQL