5

I have a long string and I would like to semi-uniquely represent it as a bigint. Ideally I'd just take the hash, but presto hash functions seem to want to return "varbinary", and I can't find a function to convert a varbinary into a bigint.

If I write:

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

I get an error saying I can't cast a varbinary to a bigint.

Martin Traverso
  • 4,731
  • 15
  • 24
erbert
  • 153
  • 1
  • 4

1 Answers1

12

You can use from_big_endian_64 to convert a 64-bit binary value to a bigint:

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

        _col0
---------------------
 4708639809588864798
(1 row)
Martin Traverso
  • 4,731
  • 15
  • 24