to_binary:字符串转二进制
速查结论
to_binary(str[, fmt]) 是 Spark SQL 中用于将字符串转换为二进制值的函数。支持 hex、utf-8、utf8、base64 四种编码格式,默认使用 hex。任一参数为 NULL 时返回 NULL。
语法
to_binary(str[, fmt])
参数说明
| 参数 | 说明 |
|---|---|
str | 待转换的字符串表达式 |
fmt | 可选,编码格式。支持 hex、utf-8、utf8、base64(不区分大小写)。默认值为 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 参数必须是 hex、utf-8、utf8、base64 之一,不支持其他编码格式。
-- 错误写法:'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真题
