2017-04-19 35 views
-1

我面臨着快把我逼瘋了2小時試錯之後的挑戰......普雷斯托MD5哈希在數據庫表的多個列

我需要哈希關係表的至少兩列急(實際上與使用presto引擎的亞馬遜雅典娜)。

我現在的狀態是這樣的:

SELECT concat(lower(to_hex(md5(to_utf8(trim(column1))))), 
       lower(to_hex(md5(to_utf8(trim(column2)))))) AS HK 
FROM table 
limit 10 

這樣做的問題是,它散列第一列和事後連接它們怎樣結束這樣看,因爲它加到哈希:

8f9bfe9d1345237cb3b2b205864da075ce8ae9da5b7cd6c3df2929543a9af92d 

而不是首先串聯字符串,然後哈希它應該像這樣結束:

8f9bfe9d1345237cb3b2b205864da075 

我非常感謝有關如何解決此問題的任何想法。

編輯:

我有一個辦法,只是不使用TRIM()函數,用它來查詢一個錯誤消息不起作用,結果

INVALID_FUNCTION_ARGUMENT:必須有兩個或多個級聯參數

目前查詢:

SELECT lower(to_hex(md5(to_utf8(concat(user, email))))) AS UserMailHK FROM table limit 10 

有關於此的任何想法?

+0

你使用哪個dbms? – jarlh

+0

輸入數據來自存儲在AWS S3上的CSV文件。我剛在雅典娜創建了一張桌子,並在該桌子上運行查詢。 – MConan

+0

您是否試過'SELECT lower(to_hex(md5(to_utf8(concat(trim(user),trim(email))))))AS UserMailHK FROM table'? –

回答

1

感謝Piotr,我得到了一個解決方案!

SELECT lower(to_hex(md5(to_utf8(concat(trim(user), trim(email)))))) AS UserMailHK FROM table limit 10