适用于:
Databricks SQL 预览版
Databricks Runtime 11.3 LTS 及更高版本
返回基于 expr 强制转换为 BINARY 的 fmt;如果输入无效,则返回 NULL。
语法
try_to_binary(expr [, fmt] )
参数
expr:要强制转换的 STRING 表达式。fmt:描述如何解释expr的 STRING 字面量。
返回
一个 BINARY。
备注
如果提供 fmt,则它必须是以下项之一(不区分大小写):
'HEX'expr必须是十六进制字符串。 每个字符必须是十六进制数字,并且必须是偶数位数。 结果是十六进制字符串的二进制表示形式。如果
expr不是格式正确的十六进制值,则函数返回NULL。 改用 to_binary 来返回错误。'BASE64'expr必须是 RFC 4648 §4:base64(标准)编码字符串。 结果为解码的二进制数据。'UTF-8'或'UTF8'expr解释为 UTF-8 字符串。 结果是字符串的二进制表示形式。
默认 fmt 为 'HEX'。
示例
> SELECT cast(to_binary('537061726B') AS STRING);
Spark
> SELECT cast(to_binary('hello', 'hex') AS STRING);
Error: CONVERSION_INVALID_INPUT
> SELECT cast(try_to_binary('hello', 'hex') AS STRING);
NULL
> SELECT cast(to_binary('537061726B', 'hex') AS STRING);
Spark
> SELECT cast(to_binary('U3Bhcms=', 'base64') AS STRING);
Spark
> SELECT cast(to_binary('U3Bhxcms=', 'base64') AS STRING);
Error: CONVERSION_INVALID_INPUT
> SELECT cast(try_to_binary('U3Bhxcms=', 'base64') AS STRING);
NULL
> SELECT hex(to_binary('서울시(Seoul)', 'UTF-8'));
EC849CEC9AB8EC8B9C2853656F756C29