Sql 如何在Presto中对bigint运行md5()?

Sql 如何在Presto中对bigint运行md5()?,sql,md5,presto,Sql,Md5,Presto,返回 select md5(15) 如何散列15并返回字符串?我想随机选择16项中的1项,例如,其中md5(id)像“%3” 仅供参考,我可能在版本0.147上,不知道怎么说。 仅供参考,我找到了。md5将是跨平台的,这很好,但我将采用一个依赖于Presto的散列函数,它可以相对均匀地传播ID。我想我可以实现我自己的线性公式。看起来很尴尬。我能想到的最好办法是将整数转换为varchar,然后通过utf8将其转换为varbinary,然后在varbinary上应用md5: Query faile

返回

select md5(15)
如何散列15并返回字符串?我想随机选择16项中的1项,例如,
其中md5(id)像“%3”

仅供参考,我可能在版本0.147上,不知道怎么说。
仅供参考,我找到了。md5将是跨平台的,这很好,但我将采用一个依赖于Presto的散列函数,它可以相对均匀地传播ID。我想我可以实现我自己的线性公式。看起来很尴尬。

我能想到的最好办法是将整数转换为varchar,然后通过utf8将其转换为varbinary,然后在varbinary上应用md5:

Query failed (#20160818_193909_00287_8zejd): line 1:8:
 Unexpected parameters (bigint) for function md5. Expected: md5(varbinary)
如果结果不是这样,则始终可以手动将其转换为十六进制字符串:

presto> select md5(to_utf8(cast(15 as varchar)));
                      _col0
-------------------------------------------------
 9b f3 1c 7f f0 62 93 6a 96 d3 c8 bd 1f 8f 2f f3
(1 row)

这看起来很好,但对我来说是这样的:“\u col0[B@3bed3386“@dfrankow md5生成varbinary。您可以自己将其转换为十六进制字符串。(请参见编辑)
presto> select to_hex(md5(to_utf8(cast(15 as varchar))));
              _col0
----------------------------------
 9BF31C7FF062936A96D3C8BD1F8F2FF3
(1 row)