try_to_binary
函数
适用于: Databricks SQL 预览版 Databricks Runtime 11.3 LTS 及更高版本
返回基于 fmt
强制转换为 BINARY 的 expr
;如果输入无效,则返回 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