使用二进制数据¶
BINARY 数据类型的实用性和灵活性最好能通过示例进行证明。本主题提供了涉及 BINARY 数据类型及其三种编码方案的任务的实际示例。
在十六进制和 Base64 之间转换¶
在十六进制和 Base64 字符串之间进行转换时,可以将 BINARY 数据类型用作中间步骤。
使用 TO_CHAR 从十六进制转换为 Base64:
从 Base64 转换为十六进制:
在文本和 UTF-8 字节之间转换¶
Snowflake 中的字符串由 Unicode 字符组成,而二进制值由字节组成。通过将字符串转换为 UTF-8 格式的二进制值,您可以直接对组成 Unicode 字符的字节进行操作。
使用 TO_BINARY 将包含单个字符的字符串转换为以字节表示的 UTF-8 格式:
使用 TO_CHAR、TO_VARCHAR 将一个 UTF-8 字节序列转换为字符串:
获取 Base64 格式的 MD5 摘要¶
使用 TO_CHAR 将二进制的 MD5 摘要转换为 Base64 字符串:
使用可变格式转换为二进制¶
使用从字符串中提取的二进制格式将字符串转换为二进制值。该语句包括 TRY_TO_BINARY 和 SPLIT_PART 函数:
尝试多种格式的转换:
备注
由于上述查询使用了 TRY_TO_BINARY,因此,如果无法识别格式或无法使用给定格式解析字符串,结果将是 NULL。
使用 JavaScript UDF 自定义解码¶
BINARY 数据类型允许存储任意数据。由于 JavaScript UDFs 通过 Uint8Array 支持该数据类型(参见 JavaScript UDFs 简介),因此可以在 JavaScript 中实现自定义解码逻辑。这不是最有效的工作方式,但却非常强大。
创建基于第一个字节进行解码的函数: