我想通过类似部分varchar
列拆分 Amazon Athena 数据库中的数据。如果我能varchar
转换为integer
我会只使用some_hash_function(data) mod n
.但是雅典娜的哈希函数返回varbinary
并且不能转换为integer
。
那么,是否有可能用另一种方式解决这个问题呢?
您可以使用from_big_endian_64
函数将 8 字节varbinary
转换为bigint
。 下面是一个完整的示例:
select from_big_endian_64(substr(sha256(to_utf8('test')), 1, 8));
一般来说,Dain 的答案是正确的,但有一点评论:因为substr
将varchar
作为第一个参数,但sha256
返回varbinary
该代码将失败。
这是一个可行的替代方案:
from_big_endian_64(xxhash64(to_utf8(user_id)))