看似简单的问题,对应于关于MySQL的另一个问题:如何在PostgreSQL数据库中存储由SHA1哈希产生的十六进制值?
注意:我意识到我可以使用VARCHAR(40)字段,但这不是很有效,因为数据是十六进制的。此外,我使用PHP与数据库进行交互,因此我可以在必要时使用PHP函数,但如果是这种情况,我将如何将结果存储在数据库中?
答案 0 :(得分:2)
我将存储为bytea,十六进制编码。将人类可读的十六进制数据转换为bytea只是一个问题:
('\x' || sha1_hex_value)::bytea
这里唯一真正的缺点是,根据您的应用程序框架,您可能会获得二进制表示。如果不是,您将获得转义版本,并且根据转义设置,可能希望自己转换为二进制(如果它是十六进制,但您可以剥离值前面的\x
并使用十六进制)