
# 二进制数据类型
表1二进制数据类型 
| 数据类型          | 与MySQL的差异                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|
| BINARY\[(M)\] | - 输入格式： - 插入字符串长度小于目标长度时，GaussDB填充符是0x20，MySQL是0x00。    - 字符集：默认字符集为数据库初始化字符集，MySQL默认类型字符集为BINARY字符集。  - 输出格式： - JDBC协议输出时BINARY类型的末尾空格显示为空格，MySQL末尾空格显示为\\x00。  - 宽松模式下， BINARY类型面对输入超过n的字节数的字符输入(例如中文字符), 会将超限的整个字符截断。MySQL中会将超限的整个字符的前几位满足n范围内的字节信息保留，但输出时字符信息显示乱码。     其余差异请参见表格下方说明中的内容。 说明： GaussDB中，由于BINARY类型填充符与MySQL的差异，在操作符比较计算，字符串相关系统函数计算，索引匹配，数据导入导出等场景下与MySQL的表现会存在差异。具体差异场景请参见本章节示例。 |
| VARBINARY(M)  | 字符集：默认字符集为数据库初始化字符集，MySQL默认类型字符集为BINARY字符集。 其余差异请参见表格下方说明中的内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| TINYBLOB      | 具体差异请参见表格下方说明中的内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| BLOB          | 具体差异请参见表格下方说明中的内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| MEDIUMBLOB    | 具体差异请参见表格下方说明中的内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| LONGBLOB      | 取值范围：只支持最大1GB-512字节长度，MySQL最大支持4GB-1字节长度。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| BIT\[(M)\]    | 输出格式： - GaussDB中会以二进制字符串形式输出，MySQL 5.7中根据ASCII码表转义，无法转义的输出无法显示的字符串。MySQL 8.0 中统一输出0x形式的十六进制结果。  - 在MySQL 8.0以上版本，默认会开头补0，GaussDB不会补0。   其余差异请参见表格下方说明中的内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
![](https://support.huaweicloud.com/usermanual-ugo/public_sys-resources/note_3.0-zh-cn.png)
- 对于无法转义的二进制或十六进制字符串，MySQL 5.7会输出无法显示的字符串， MySQL 8.0输出格式为0x形式的十六进制结果，GaussDB输出格式为多个\\x的十六进制结果。
- 对于TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB类型：
  - MySQL中不允许设置默认值，GaussDB中创建表列时语法上允许设置默认值。
  
  - 主键：MySQL中不支持主键，GaussDB支持。
  
  - 索引：MySQL中不支持除前缀索引外其他索引方法，GaussDB支持。
  
  - 外键：MySQL中不支持作为外键的参考列/被参考列，GaussDB支持。
   
 
示例：
```
-- GaussDB
m_db=# CREATE TABLE test_blob(a blob);
CREATE TABLE
m_db=# INSERT INTO test_blob VALUES(0x1);
INSERT 0 1
m_db=# INSERT INTO test_blob VALUES(0x111111);
INSERT 0 1
m_db=# INSERT INTO test_blob VALUES(0x61);
INSERT 0 1
m_db=# SELECT * FROM test_blob;
      a       
--------------
 \x01
 \x11\x11\x11
 a
(3 rows)
m_db=# DROP TABLE test_blob;
DROP TABLE
-- MySQL 5.7
mysql> CREATE TABLE test_blob(a blob);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO test_blob VALUES(0x1);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO test_blob VALUES(0x111111);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO test_blob VALUES(0x61);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM test_blob;
+------+
| a    |
+------+
|     |
|   |
| a    |
+------+
3 rows in set (0.00 sec)
mysql> DROP TABLE test_blob;
Query OK, 0 rows affected (0.00 sec)
-- MySQL 8.0
mysql> CREATE TABLE test_blob(a blob);
Query OK, 0 rows affected (0.08 sec)
mysql> INSERT INTO test_blob VALUES(0x1);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO test_blob VALUES(0x111111);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO test_blob VALUES(0x61);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM test_blob;
+------------+
| a          |
+------------+
| 0x01       |
| 0x111111   |
| 0x61       |
+------------+
3 rows in set (0.00 sec)
mysql> DROP TABLE test_blob;
Query OK, 0 rows affected (0.04 sec)
```
