跳到主要内容

to_binary:字符串转二进制

速查结论

to_binary(str[, fmt]) 是 Spark SQL 中用于将字符串转换为二进制值的函数。支持 hex、utf-8、utf8、base64 四种编码格式,默认使用 hex。任一参数为 NULL 时返回 NULL。

语法

to_binary(str[, fmt])

参数说明

参数说明
str待转换的字符串表达式
fmt可选,编码格式。支持 hexutf-8utf8base64(不区分大小写)。默认值为 hex

返回值:根据 fmt 指定的编码格式将 str 转换为二进制值。如果任一参数为 NULL,返回 NULL。

Since: 3.3.0

示例

hex 编码(默认)

-- hex 编码:将十六进制字符串转为二进制
SELECT to_binary('48656C6C6F');
-- 结果: Hello 的二进制表示

-- 显式指定 hex
SELECT to_binary('48656C6C6F', 'hex');
-- 结果同上

UTF-8 编码

-- UTF-8 编码:将普通字符串转为二进制
SELECT to_binary('abc', 'utf-8');
-- 结果: abc

-- utf8 是 utf-8 的别名
SELECT to_binary('你好', 'utf8');
-- 结果: 你好的 UTF-8 二进制表示

Base64 编码

-- Base64 编码:将 Base64 字符串解码为二进制
SELECT to_binary('SGVsbG8gV29ybGQ=', 'base64');
-- 结果: Hello World 的二进制表示

NULL 值处理

-- 任一参数为 NULL,返回 NULL
SELECT to_binary(NULL, 'hex');
-- 结果: NULL

SELECT to_binary('abc', NULL);
-- 结果: NULL

常见报错与避坑指南

非法 hex 字符串

当使用 hex 格式时,输入字符串必须是合法的十六进制字符串(只包含 0-9、a-f、A-F),否则会抛出异常。

-- 错误写法:'GG' 不是合法的十六进制字符
SELECT to_binary('GG', 'hex');
-- 报错:Invalid hexadecimal string

-- 正确写法:确保字符串只包含十六进制字符
SELECT to_binary('FF', 'hex');

不支持的编码格式

fmt 参数必须是 hexutf-8utf8base64 之一,不支持其他编码格式。

-- 错误写法:'gbk' 不是支持的编码格式
SELECT to_binary('abc', 'gbk');
-- 报错:Unsupported encoding format

-- 支持的格式:hex, utf-8, utf8, base64
SELECT to_binary('abc', 'utf-8');

Base64 字符串格式不正确

传入的 Base64 字符串必须是合法的 Base64 编码,否则会报错。

-- 错误写法:包含非法 Base64 字符
SELECT to_binary('!!!invalid base64!!!', 'base64');
-- 报错:Illegal base64 character

-- 正确写法:使用合法的 Base64 字符串
SELECT to_binary('SGVsbG8=', 'base64');
📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看