В момента губите половината от контролната сума, когато използвате BINARY(16)
. Когато съхранявате MD5 контролна сума в BINARY(16)
трябва да го съхранявате като двоични данни, не кодирани в шестнадесетичен. Това е:
INSERT INTO test (md5_binary) VALUES(UNHEX(md5("one!")));
Можете да използвате функцията HEX, за да го кодирате отново в шестнадесетичен, ако искате да го сравните с друга контролна сума:
SELECT HEX(md5_binary) FROM test;
Предимството от използването на BINARY за съхраняване на контролната сума вместо шестнадесетичен текст е, че е необходима половината от паметта.