【问题标题】:md5 in bigquery大查询中的 md5
【发布时间】:2019-06-22 06:16:17
【问题描述】:

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

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

它总是在字母的最后返回“==”,例如:

R7zlx09Yn0hn29V+nKn4CA==    

为什么'=='总是伴随着它?

【问题讨论】:

标签: sql google-bigquery md5


【解决方案1】:

你需要使用 TO_HEX 来获得你想要的表示,因为 md5 返回 BYTES 并且你需要字符串:

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

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

返回:

e10adc3949ba59abbe56e057f20f883e

【讨论】:

    【解决方案2】:

    = 是由于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=
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2011-12-13
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多