bigquery中的md5

时间:2019-01-29 07:12:04

标签: sql google-bigquery md5

在BigQuery中,我将md5函数用作:

select md5('<<some string>>') as hashed

总是在字母的末尾返回“ ==“,例如:

R7zlx09Yn0hn29V+nKn4CA==    

为什么总是总是带有'=='?

2 个答案:

答案 0 :(得分:4)

您需要使用TO_HEX来获取所需的表示形式,因为md5返回BYTES,并且您需要字符串:

  

TO_HEX:将BYTES序列转换为十六进制STRING。   将STRING中的每个字节转换为两个十六进制字符   范围(0..9,a..f)。

select TO_HEX(md5('123456')) as hashed

返回:

e10adc3949ba59abbe56e057f20f883e

答案 1 :(得分:1)

=是由于base64's padding引起的。尽管如此,根据the documentation,输出应为字节,但输出为base64字符串。您可以通过以下查询进行检查:

SELECT MD5("Hello World") AS MD5,TO_HEX(MD5("Hello World")) AS BYTES,TO_BASE64(FROM_HEX(TO_HEX(MD5("Hello World")))) as BASE64

具有以下输出:

Row |MD5                        |BYTES                              |BASE64  
1   |sQqNsWTgdUEFt6mb5y4/5Q==   |b10a8db164e0754105b7a99be72e3fe5   |sQqNsWTgdUEFt6mb5y4/5Q=