如何尝试将BigQuery的CAST BYTES设置为STRING?

Pra*_*les 6 sql casting google-bigquery

BigQuery 标准SQL文档建议可以将BYTE字段强制为STRINGS。

我们有一个字节字段,它是使用BigQuery本身对SHA256哈希字段的结果。

现在,我们想将其强制为STRING,但是当我们运行“ CAST(field_name to STRING)”时,会出现错误:

查询失败错误:无效的字节转换为UTF8字符串

是什么阻止我们从此字节字段中获取字符串?它可以克服吗?如果可以,解决方案是什么?

Jav*_*tón 7

如果您想在 String 中查看哈希的“传统”表示,则必须使用TO_HEX()函数。

WITH table AS (
 SELECT SHA256('abc') as bytes_field
)
SELECT bytes_field, TO_HEX(bytes_field) as string_field
FROM table
Run Code Online (Sandbox Code Playgroud)

默认情况下,BigQuery 在 UI 中向您显示 base64 表示,但如果您想将其与其他语言的其他 sha256 函数进行比较,例如,您必须使用 TO_HEX()


Mik*_*ant 6

下面的例子应该告诉你一个想法

#standardSQL
WITH t AS (
  SELECT SHA256('abc') x
)
SELECT x, TO_BASE64(x)
FROM t 
Run Code Online (Sandbox Code Playgroud)

简而言之-您可以为此使用TO_BASE64()