数据库表中多列的 Presto MD5 哈希

MCo*_*nan 3 sql hash md5 presto amazon-athena

经过两个小时的反复试验,我面临着一个让我发疯的挑战......

我需要使用 presto 散列至少两列关系表(实际上是使用使用 presto 引擎的 Amazon Athena)。

我现在的状态是这样的:

SELECT concat(lower(to_hex(md5(to_utf8(trim(column1))))),
              lower(to_hex(md5(to_utf8(trim(column2)))))) AS HK
FROM table
limit 10
Run Code Online (Sandbox Code Playgroud)

问题在于,它首先对列进行散列,然后将它们连接起来,最终看起来像这样,因为它连接了散列:

8f9bfe9d1345237cb3b2b205864da075ce8ae9da5b7cd6c3df2929543a9af92d
Run Code Online (Sandbox Code Playgroud)

而不是先连接字符串然后散列它应该像这样结束:

8f9bfe9d1345237cb3b2b205864da075
Run Code Online (Sandbox Code Playgroud)

对于如何解决这个问题的任何想法,我将不胜感激。

编辑:

我得到了一个解决方案,但只是不使用 trim() 函数,使用它查询不起作用并导致错误消息

INVALID_FUNCTION_ARGUMENT:必须有两个或多个连接参数

当前查询:

SELECT lower(to_hex(md5(to_utf8(concat(user, email))))) AS UserMailHK FROM table limit 10
Run Code Online (Sandbox Code Playgroud)

对此有何想法?

MCo*_*nan 9

感谢 Piotr,我得到了解决方案!

SELECT lower(to_hex(md5(to_utf8(concat(trim(user), trim(email)))))) AS UserMailHK FROM table limit 10 
Run Code Online (Sandbox Code Playgroud)