如何解码标准 SQL 中的 BASE64?

How to decode BASE64 in Standard SQL?

我正在尝试在 BigQuery 中使用标准 SQL 将一列 base64 值取消散列为解码字符串,但到目前为止还没有成功。

我发现有一个函数叫做 FROM_BASE64() 但是 -

一个。该文档使它看起来好像将 BASE64 转换为 BYTES,这意味着我需要进行额外的转换。

乙。 FROM_BASE64() 甚至不起作用 - 查询运行,但结果始终与我输入的编码字符串完全相同。

SELECT FROM_BASE64('aGVsbG8tc3RhY2tvdmVyZmxvdw==')

returns

"aGVsbG8tc3RhY2tvdmVyZmxvdw=="

最好的方法是什么?

Base64 是 byte 级别的编码算法,所以这就是为什么 FROM_BASE64() 的输出是 BYTES.

只要不需要显示解码后的字节,就可以根据需要在查询中使用它们。但是原始字节在 BigQuery 中可能无法 displayable,因此它可能会选择在 BASE64 中显示它们。因此,您的示例将简单地将字符串文字解码为字节,然后将结果重新编码回 Base64,这将解释为什么您将输入字符串视为输出。

您可以将 BYTES 转换为 STRING,但这仅在原始字节表示有效的 UTF-8 编码字符串时有效。 或者,您可以使用 SAFE_CONVERT_BYTES_TO_STRING()BYTES 解码为 STRING,用 Unicode 代码点 U+FFFD 替换任何无效的 UTF-8 字节。

或者,您可以使用 FORMAT()BYTES 十六进制 \x## 格式显示每个字节。