2

看似简单的问题,对应于另一个关于 MySQL 的问题:如何将 SHA1 哈希产生的十六进制值存储在 PostgreSQL 数据库中?

注意:我意识到我可以使用 VARCHAR(40) 字段,但这效率不高,因为数据是十六进制的。另外,我正在使用 PHP 与数据库进行交互,因此我可以在必要时使用 PHP 函数,但如果是这种情况,我应该将结果存储在数据库中吗?

4

1 回答 1

2

我会存储为 bytea,十六进制编码。将人类可读的十六进制数据转换为 bytea 只需:

  ('\x' || sha1_hex_value)::bytea

这里唯一真正的缺点是,根据您的应用程序框架,您可能会得到二进制表示。如果不是,您将获得一个转义版本,并且根据转义设置,可能需要自己转换为二进制(如果它是十六进制,尽管您可以去掉\x值前面的 并用作十六进制)。

于 2013-03-25T03:47:31.230 回答