【问题标题】:How to query a BYTES field in BigQuery using SQL?如何使用 SQL 查询 BigQuery 中的 BYTES 字段?
【发布时间】:2017-02-04 13:24:42
【问题描述】:

我们在 Google BigQuery 的表中对一个字段进行了 SHA256 加密,结果类型为 BYTES。

我们已经尝试编写各种匹配字段查询,但没有一个显然是正确的。

SELECT * WHERE
field LIKE '16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw=' 

SELECT ...
field = '16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw='

SELECT ...
field = 16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw=

如何在 BigQuery 中编写 SQL 查询来查询 BYTES 字段?


更新:现在我们使用下面 Gordon 的答案运行查询,但它返回零结果,即使字节码与 BigQuery 显示的内容完全匹配。我们还需要做些什么来匹配字节吗?

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    我认为 UI 显示的是字节列的基本 64 位转义内容,因为它们无法呈现为 UTF-8。您需要使用例如

    SELECT *
    FROM T
    WHERE field = FROM_BASE64('16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw=');
    

    【讨论】:

    • 谢谢。那行得通。 StackOverflow - 每晚可以保存多少个项目。真的是地球上最好的编码资源。
    【解决方案2】:

    字节文字以b 开头。 documentation 解释了这一点。

    我想你想要:

    SELECT *
    FROM . . .
    WHERE field = b'16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw=' 
    

    【讨论】:

    • 这使查询运行 - 但它返回零结果。如果我们查询表,请查看 SHA256 字段,复制它(就像问题中的那个)并像您显示的那样查询它 - BigQuery 告诉我们结果为零。字节转换还有其他技巧吗?
    猜你喜欢
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多