类别:

转换函数

TRY_TO_BINARY

TO_BINARY 的特殊版本,它执行相同的操作(即将输入表达式转换为二进制值),但支持错误处理(即,如果无法执行转换,它将返回 NULL 值而不是引发错误)。

有关更多信息,请参阅:

语法

TRY_TO_BINARY( <string_expr> [, '<format>'] )
Copy

实参

必填:

string_expr

字符串表达式。

可选:

format

用于转换的二进制格式:HEX、BASE64 或 UTF-8(请参阅 Binary Input and Output)。默认值为 BINARY_INPUT_FORMAT 会话参数的值。如果未设置此参数,则默认值为 HEX。

返回

返回类型 BINARY 的值。

使用说明

  • 仅适用于字符串表达式。

  • 如果指定了 format 但不是 HEX、BASE64 或 UTF-8,则结果将是一个 NULL 值。

示例

该示例显示在将十六进制编码的字符串加载到 BINARY 列中时如何使用 TRY_TO_BINARY 函数:

创建并填写表:

CREATE TABLE strings (v VARCHAR, hex_encoded_string VARCHAR, b BINARY);
INSERT INTO strings (v) VALUES
    ('01'),
    ('A B'),
    ('Hello'),
    (NULL);
UPDATE strings SET hex_encoded_string = HEX_ENCODE(v);
UPDATE strings SET b = TRY_TO_BINARY(hex_encoded_string, 'HEX');
Copy

查询表,调用 TRY_TO_BINARY():

SELECT v, hex_encoded_string, TO_VARCHAR(b, 'UTF-8')
  FROM strings
  ORDER BY v
  ;
+-------+--------------------+------------------------+
| V     | HEX_ENCODED_STRING | TO_VARCHAR(B, 'UTF-8') |
|-------+--------------------+------------------------|
| 01    | 3031               | 01                     |
| A B   | 412042             | A B                    |
| Hello | 48656C6C6F         | Hello                  |
| NULL  | NULL               | NULL                   |
+-------+--------------------+------------------------+
Copy
语言: 中文