如何在 presto 中将字符串散列为 bigint?

How can I hash a string to a bigint in presto?

我有一个长字符串,我想将它半唯一地表示为一个 bigint。理想情况下,我只是采用散列,但 presto hash functions 似乎想要 return “varbinary”,而且我找不到将 varbinary 转换为 bigint 的函数。

如果我写:

cast(xxhash64(cast('asdf' as varbinary)) as bigint)

我收到一条错误消息,提示我无法将 varbinary 转换为 bigint。

您可以使用 from_big_endian_64 将 64 位二进制值转换为 bigint:

presto> SELECT from_big_endian_64(xxhash64(CAST('asdf' AS varbinary)));

        _col0
---------------------
 4708639809588864798
(1 row)