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