to_binary 函数

适用于:check marked yes Databricks SQL 预览版 check marked yes Databricks Runtime 11.3 及更高版本

返回基于 fmt 强制转换为 BINARY 的 expr

语法

to_binary(expr [, fmt] )

参数

  • expr:要强制转换的 STRING 表达式。
  • fmt:描述如何解释 expr 的 STRING 字面量。

返回

一个 BINARY。

备注

如果提供 fmt,则它必须是以下项之一(不区分大小写):

  • 'HEX'

    expr 必须是十六进制字符串。 每个字符必须是十六进制数字,并且必须是偶数位数。 结果是十六进制字符串的二进制表示形式。

    如果 expr 不是有效的十六进制字符串,则 Azure Databricks 会返回 CONVERSION_INVALID_INPUT 错误。 请改用 try_to_binary 返回 NULL 值。

  • 'BASE64'

    expr 必须是 RFC 4648 §4:base64(标准)编码字符串。

    结果为解码的二进制数据。 在 RFC 4648 §4 下,任何格式不正确的 bae64 字符串都会导致 CONVERSION_INVALID_INPUT 错误。

  • '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