问题:PostgreSQL中有散列函数吗?

我正在使用 Sphinx 来索引我的数据库。问题是我必须通过字符变化字段过滤结果。所以我必须找到一种方法来将不同的字符转换为sql_attr_uint。我知道 mysql 中的 CRC32 可以解决问题。 PostgreSQL 中是否有 CRC32 或任何替代品?

解答

也许你可以使用decode(substring(md5('foo') for 8), 'hex')。这将为您提供该字符串的 md5 哈希的前 4 个字节的字节。

您可以使用以下方法将其转换为整数:

create function bytea_to_integer(bytea)
returns integer strict
language sql as $$
  select
     (get_byte($1,0)*1::integer<<0*8)
    +(get_byte($1,1)*1::integer<<1*8)
    +(get_byte($1,2)*1::integer<<2*8)
    +(get_byte($1,3)*1::integer<<3*8);
$$;
Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐