如何解码标准 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##
格式显示每个字节。
我正在尝试在 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##
格式显示每个字节。