to_binary
功能
根据指定的二进制格式 (binary_type
),将 VARCHAR 字符串转换为二进制类型。支持的二进制格式包括 Hex, Base64,和 UTF-8。如果未指定,默认为 Hex。
该函数从 3.0 版本开始支持。
语法
to_binary(str[, binary_type])
参数说明
-
str
: 必选,待转换的字符串,VARCHAR 类型。 -
binary_type
:可选,指定的二进制格式,VARCHAR 类型。有效值:hex
,encode64
,utf8
。hex
(默认值): 该函数会将输入字符串作为十六进制字符串处理('0123456789abcdef'),比如"abab"
会转换为x'abab'
。如果输入值非法,返回空 binary 而非抛异常。hex
格式下该函数对大小写不敏感。encode64
: 该函数会将输入字符串作为 Base64 字符串处理,比如"YWJhYg=="
会解码为x'abab'
。如果输入值非法,返回空 binary 而非抛异常。utf8
: 该函数直接将输入字符串转换为二进制类型,不做任何转换处理。
返回值说明
返回 VARBINARY 类型的二进制数值。
示例
以下示例在启动 MySQL 客户端时添加了 --binary-as-hex
选项,会默认以 hex
格式展示 BINARY 数据。
mysql> select to_binary('abab', 'hex');
+----------------------------------------------------+
| to_binary('ABAB', 'hex') |
+----------------------------------------------------+
| 0xABAB |
+----------------------------------------------------+
1 row in set (0.01 sec)
mysql> select to_binary('U1RBUlJPQ0tT', 'encode64');
+------------------------------------------------------------------------------+
| to_binary('U1RBUlJPQ0tT', 'encode64') |
+------------------------------------------------------------------------------+
| 0x53544152524F434B53 |
+------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select to_binary('STARROCKS', 'utf8');
+----------------------------------------------------------------+
| to_binary('STARROCKS', 'utf8') |
+----------------------------------------------------------------+
| 0x53544152524F434B53 |
+----------------------------------------------------------------+
1 row in set (0.00 sec)
-- 输入值不合法,返回空 binary。
mysql> select to_binary('U1RBUlJPQ0tT', 'hex');
+--------------------------------------------------------------------+
| to_binary('U1RBUlJPQ0tT', 'hex') |
+--------------------------------------------------------------------+
| 0x |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)