regress=> SELECT md5('blah blah');
md5
----------------------------------
ae661d08d1ca1576a6efcb82b7bc502f
(1 row)
这bytea
也适用于字段:
regress=> SELECT md5(BYTEA '\x000102');
md5
----------------------------------
b95f67f61ebb03619622d798f45fc2d3
(1 row)
BYTEA '\x000102'
只是示例的 bytea 文字。你通常只是写md5(the_column)
,它对文本和 bytea 都适用。
当然,在任何实际测试中,您总是会写:
SELECT blah, blah2
FROM tablename
WHERE md5(fieldname) = 'ae661d08d1ca1576a6efcb82b7bc502f'
AND fieldname = 'blah blah';
因为校验和本质上会冒碰撞的风险,但不太可能。通常你会有一个索引,md5(fieldname)
这样你就会大大减少进行全字段比较的次数,例如:
CREATE INDEX sometable_somefield_md5 ON sometable((md5(somefield));