如何使用 SQL 查询 BigQuery 中的 BYTES 字段?
Posted
技术标签:
【中文标题】如何使用 SQL 查询 BigQuery 中的 BYTES 字段?【英文标题】:How to query a BYTES field in BigQuery using SQL? 【发布时间】: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 显示的内容完全匹配。我们还需要做些什么来匹配字节吗?
【问题讨论】:
【参考方案1】:我认为 UI 显示的是字节列的基本 64 位转义内容,因为它们无法呈现为 UTF-8。您需要使用例如
SELECT *
FROM T
WHERE field = FROM_BASE64('16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw=');
【讨论】:
谢谢。那行得通。 *** - 每晚可以保存多少个项目。真的是地球上最好的编码资源。【参考方案2】:字节文字以b
开头。 documentation 解释了这一点。
我想你想要:
SELECT *
FROM . . .
WHERE field = b'16D6M7PN3w7Cn8mJyrmrUSZY9ummMf5QCGEMuiSmSlw='
【讨论】:
这使查询运行 - 但它返回零结果。如果我们查询表,请查看 SHA256 字段,复制它(就像问题中的那个)并像您显示的那样查询它 - BigQuery 告诉我们结果为零。字节转换还有其他技巧吗?以上是关于如何使用 SQL 查询 BigQuery 中的 BYTES 字段?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?
如何让 BigQuery 的 API 使用标准 SQL 进行查询?